recherche

Maison  >  Questions et réponses  >  le corps du texte

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值

仅有的幸福仅有的幸福2757 Il y a quelques jours611

répondre à tous(2)je répondrai

  • PHPz

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

    répondre
    0
  • 阿神

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

    répondre
    0
  • Annulerrépondre