Mongo NodeJS 查询结果中的数据库差异
Mongo DB differences in NodeJS query result
在 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.
中执行
documentation 声明管道(aggregate
的第一个参数)应该是一个数组:
db.collection('coll').aggregate([{
$project: { _id: 0, Name: '$_id', count: 1 }
}, {
$group: {_id : '$Name', count : { $sum: 1 } }
}]).toArray(...)
在 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.
documentation 声明管道(aggregate
的第一个参数)应该是一个数组:
db.collection('coll').aggregate([{
$project: { _id: 0, Name: '$_id', count: 1 }
}, {
$group: {_id : '$Name', count : { $sum: 1 } }
}]).toArray(...)