Mongo DB在NodeJS查询结果中的差异

科里

在MongoDB(3.2.7)shell中执行以下查询:

db.coll.aggregate({$group: {_id : '$Name', count : {$sum: 1 }}}, {$project: { _id:0, Name: '$_id', count: 1 }})

我完全满足了我的需求:

{ "count" : 4, "Name" : "Name1" }
{ "count" : 5, "Name" : "Name2" }
{ "count" : 1, "Name" : "Name3" }
{ "count" : 9, "Name" : "Name4" }

我想在NodeJS(mongodb节点模块2.2.5)中使用此聚合,因此我定义了一个API:

app.get('/api', function(req, res){
        db.collection('coll').aggregate({$group: {_id : '$Name', count : {$sum: 1 }}}, {$project: { _id: 0, Name: '$_id', count: 1 }}).toArray(function(err, docs) {
            if (err) {
                assert.equal(null);
            }
            else {
                console.log(docs);
                res.json(docs);
            }
        });
    });

当我执行此API时,关于shell结果,我得到了不同的结果:

[{"_id":"Name1","count":4},{"_id":"Name2","count":5},{"_id":"Name3","count":1},{"_id":"Name4","count":9}]

有谁知道为什么会这样吗?似乎该$project功能未在NodeJS API中执行。

罗伯特克莱普

文档指出管道(第一个参数aggregate)应该是一个数组:

db.collection('coll').aggregate([{
  $project: { _id: 0, Name: '$_id', count: 1 }
}, {
  $group: {_id : '$Name', count : { $sum: 1 } }
}]).toArray(...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章