2013-07-18 153 views
0

我試圖使用ObjectId作爲創建日期的持有者,並嘗試執行聚合查詢時遇到一些問題。特別是我們希望使用日期聚合操作符按月對文檔進行分組,但該操作符顯然不能與ObjectId一起使用。是否有解決方法,或者我必須開始爲每個文檔使用單獨的CreationTime字段?Mongo日期彙總運算符與ObjectId

下面是一個查詢我試圖 -

db.People.aggregate([ 
{ 
    $match: { 
     $or: [{"Name":"Random1"}, {"Name":"Random2"}] 
    } 
}, 
{ 
    $project: { 
     Name: "$Name", 
     Year: {$year: "$_id"}, 
     Month: {$month: "$_id"} 
    } 
}, 
{ 
    $group: { 
     _id: {Name: "$Name", Year: "$Year", Month: "$Month"}, 
     TotalRequests: {$sum:1} 
    } 
} 

])

+0

如果_id是ObjectId類型,則它不能工作,因爲它不是日期。它是一個日期的散列。據我所知,逆向操作是不可能的。 – innoSPG

+1

實際上,ObjectID有一個[getTimestamp()方法](http://docs.mongodb.org/manual/reference/method/ObjectId.getTimestamp/#ObjectId.getTimestamp),但不能在AF上使用它。如果你真的想要這個功能,你應該對[this](https://jira.mongodb.org/browse/SERVER-9406)JIRA問題進行投票。 –

回答