mongodb聚合问题
仅有的幸福
仅有的幸福 2017-05-02 09:19:04
0
2
629
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值

仅有的幸福
仅有的幸福

répondre à tous(2)
PHPzhong

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']}
});
阿神

Résolu, vous pouvez le faire

db.getCollection('XXX').aggregate({
    $project:{
        _a: {$multiply:['$a', 2]},
        _b: {$add:[{$multiply:['$a', 2]}, '$b']}
    }
})
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal