聚合返回空数组

使用Model.aggregate()Model.aggregate()返回一个空的数组。

我从本质上复制了这里看到的格式。

 var match = {}; var project = {}; project["_id"] = 0; project["products.totalprice"] = 1; project["line"] = "$products.closedate"; ThisCollection.aggregate([ {$match: match}, {$project: project}, {$group: { _id: "$line" }} ], function(err, docs){ console.log(docs); //!! Returning [] }); 

我的模式本质上是一个name_id字段与产品嵌套数组与totalpriceclosedate和一些其他领域。

当然有很多条目(大约13万条logging)。 任何人都可以发现这个问题?

我已经创build了这个虚拟数据来表示您的模式的骨架:

 db.data.save({name:"a",products:{totalprice:1,closedate:1}}) db.data.save({name:"b",products:{totalprice:2,closedate:2}}) 

这个查询确实返回了两条logging,并且在插入JavaScriptvariablesproject的JSONstring时与您的查询完全相同

 ThisCollection.aggregate([{$match:{}},{$project:{"_id":0,"products.totalprice":1,line:"$products.closedate"}},{$group:{_id:"$line"}}])