2015-11-12 79 views
2

使用貓鼬的Model.aggregate()返回一個空數組。Aggregate returns empty array

我基本上覆制了所見的格式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 [] 
}); 

我模式實際上是與產品的嵌套陣列totalpriceclosedate和其他一些字段name_id字段。

確實有很多條目(約130,000條記錄)。任何人都可以發現這個問題嗎?

+0

沒有'$ group'語句的查詢是否返回任何結果? – Jaco

+0

@Jaco Nope,試圖仍然是空的。 –

+0

@Jaco Almost ...在'project'對象中使用$ products.totalprice,現在我得到了'undefined'文檔。 –

回答

1

我創造了這個虛擬數據來表示您的架構的骨架:

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

此查詢會返回兩個記錄,並等同於你插入JSON字符串的JavaScript變量時project

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

我的收藏是空的 –

+0

是的,這並沒有幫助:-) – Jaco