搜尋

首頁  >  問答  >  主體

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 天前612

全部回覆(2)我來回復

  • PHPz

    PHPz2017-05-02 09:21:04

    要先理解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']}
    });

    回覆
    0
  • 阿神

    阿神2017-05-02 09:21:04

    已解決,可以這樣

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

    回覆
    0
  • 取消回覆