mongodb聚合问题

浏览:50日期:2023-06-26

问题描述

mongodb里数据结构如下{’_id’: 1, ’a’: 10, ’b’: 20}需要得以的结构为_a: a*2_b: a*2+bdb.getCollection(’XXX’).aggregate({ $project:{_a: {$multiply:[’$a’, 2]},_b: {$add:[’$this._a’, ’$b’]} }})

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

问题解答

回答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’]}});回答2:

已解决,可以这样

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

相关文章: