开发者社区> 问答> 正文

mongodb聚合问题

mongodb里数据结构如下
{'_id': 1, 'a': 10, 'b': 20}
需要得以的结构为

_a: a*2
_b: a*2+b
db.getCollection('XXX').aggregate({
    $project:{
        _a: {$multiply:['$a', 2]},
        _b: {$add:['$this._a', '$b']}
    }
})

我这里怎么使用已经计算好的_a值

展开
收起
蛮大人123 2016-06-15 15:59:45 1735 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    要先理解aggregation的工作方式。如果了解linux的话,它跟管道是很相似的工作方式。一个管道计算的结果可以在下一个管道中使用。但是在同一个管道中使用,要么就只能重算一遍

    db.getCollection('XXX').aggregate({
        $project:{
            _a: {$multiply:['$a', 2]},
            _b: {$add:[{$multiply:['$a', 2]}, '$b']}
        }
    });

    或者在下一个管道中做计算

    db.getCollection('XXX').aggregate({
        $project: {
            _a: {$multiply:['$a', 2]},
            b: '$b'
        },
        $project: {
            _a: '$_a',
            _b: {$add: ['$_a', '$b']}
    });
    2019-07-17 19:39:33
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 -- MongoDB⾼级应⽤模式 立即下载
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载

相关镜像