Aggregate返回空数组

时间:2015-11-12 22:35:57

标签: node.js mongodb mongoose aggregation-framework

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

我基本上将格式复制为here

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和其他一些字段。

肯定有大量的条目(约130,000条记录)。任何人都可以发现这个问题吗?

1 个答案:

答案 0 :(得分:1)

我创建了这个虚拟数据来表示模式的骨架:

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

在为JavaScript变量project插入JSON字符串时,此查询会返回两条记录并与您的记录完全相同

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