Maison > Questions et réponses > le corps du texte
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
Vous devez d'abord comprendre comment fonctionne l'agrégation. Si vous connaissez Linux, cela fonctionne de manière très similaire aux tuyaux. Les résultats d’un calcul de pipeline peuvent être utilisés dans le pipeline suivant. Mais si vous l'utilisez dans le même pipeline, vous ne pouvez le recalculer qu'une seule fois
db.getCollection('XXX').aggregate({
$project:{
_a: {$multiply:['$a', 2]},
_b: {$add:[{$multiply:['$a', 2]}, '$b']}
}
});
Ou faites des calculs dans le prochain pipeline
db.getCollection('XXX').aggregate({
$project: {
_a: {$multiply:['$a', 2]},
b: '$b'
},
$project: {
_a: '$_a',
_b: {$add: ['$_a', '$b']}
});
阿神2017-05-02 09:21:04
Résolu, vous pouvez le faire
db.getCollection('XXX').aggregate({
$project:{
_a: {$multiply:['$a', 2]},
_b: {$add:[{$multiply:['$a', 2]}, '$b']}
}
})