cari

Rumah  >  Soal Jawab  >  teks badan

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值

仅有的幸福仅有的幸福2871 hari yang lalu654

membalas semua(2)saya akan balas

  • PHPz

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

    balas
    0
  • 阿神

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

    balas
    0
  • Batalbalas