Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js NodeJS查询结果中的Mongo数据库差异_Node.js_Mongodb_Projection - Fatal编程技术网

Node.js NodeJS查询结果中的Mongo数据库差异

Node.js NodeJS查询结果中的Mongo数据库差异,node.js,mongodb,projection,Node.js,Mongodb,Projection,在MongoDB(3.2.7)shell中执行以下查询: 我得到了我所需要的: { "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(r

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

我得到了我所需要的:

{ "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}]
有人知道为什么会这样吗?似乎没有在NodeJS API中执行
$project
函数。

声明管道(聚合
的第一个参数)应该是数组:

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