猿问

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值

jeck猫
浏览 731回答 2
2回答

红糖糍粑

要先理解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']} });

芜湖不芜

db.getCollection('XXX').aggregate({    $project:{        _a: {$multiply:['$a', 2]},        _b: {$add:[{$multiply:['$a', 2]}, '$b']}    }})
随时随地看视频慕课网APP

相关分类

MongoDB
我要回答