Rumah > Soal Jawab > teks badan
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值
PHPz2017-05-02 09:21:04
Anda mesti terlebih dahulu memahami cara pengagregatan berfungsi. Jika anda tahu Linux, ia berfungsi sangat serupa dengan paip. Keputusan satu pengiraan saluran paip boleh digunakan dalam saluran paip seterusnya. Tetapi jika anda menggunakannya dalam saluran paip yang sama, anda hanya boleh mengira semula sekali
db.getCollection('XXX').aggregate({
$project:{
_a: {$multiply:['$a', 2]},
_b: {$add:[{$multiply:['$a', 2]}, '$b']}
}
});
Atau lakukan pengiraan dalam saluran paip seterusnya
db.getCollection('XXX').aggregate({
$project: {
_a: {$multiply:['$a', 2]},
b: '$b'
},
$project: {
_a: '$_a',
_b: {$add: ['$_a', '$b']}
});
阿神2017-05-02 09:21:04
Selesai, anda boleh melakukan ini
db.getCollection('XXX').aggregate({
$project:{
_a: {$multiply:['$a', 2]},
_b: {$add:[{$multiply:['$a', 2]}, '$b']}
}
})