0
流星服務器代碼嘗試按月份對文檔進行分組。以便每個月的所有文件的數量都被給出。
該文件有createdAt = Date.now();
財產和氣象:總計 安裝。有什麼建議麼? thx由Date.now()屬性值上的月份組成的流星聚合組
我認爲:
1)變換集合添加新屬性'MMYYYY:6位數字',並由它組。
流星服務器代碼嘗試按月份對文檔進行分組。以便每個月的所有文件的數量都被給出。
該文件有createdAt = Date.now();
財產和氣象:總計 安裝。有什麼建議麼? thx由Date.now()屬性值上的月份組成的流星聚合組
我認爲:
1)變換集合添加新屬性'MMYYYY:6位數字',並由它組。
如果你打算經常聚合,你的考慮是一個好的選擇。如果您在創建文檔時在文檔中寫入年份和月份字符串,它肯定會更快。請記住,如果您修改相應的日期字段,則必須記住保持這些字符串處於最新狀態。
如果你不會經常聚合,那麼這可能不值得。只需將您的紀元時間值轉換爲新的Date對象,並在您的聚合管道中利用Date聚合運算符。這是一個例子。
var Metrics = new Mongo.Collection('metrics');
Metrics.aggregate([
{$project: {
createdAtDate: { $add: [new Date(0), "$createdAt"] }
}},
{$project : {
year : {$year : "$createdAtDate"},
month : {$month : "$createdAtDate"}
}},
{$group : {
_id : {year : "$year", month : "$month"},
count : {$sum : 1}
}}
]);
如果你有一個日期字符串(這裏稱爲「createdAtString」文檔場MMYYYY)去那麼你的管道應該是這樣吧。
var Metrics = new Mongo.Collection('metrics');
Metrics.aggregate([
{$group : {
_id : "$createdAtString",
count : {$sum : 1}
}}
]);
使用第一個formate,服務器錯誤說「MongoError:無法從BSON類型NumberDouble轉換爲日期」 –
@FredJ。聽起來你在yiur集合中有一個或多個文檔,它的createdAt值不是日期對象。你可以驗證所有的文檔在你的集合中都有一個真實的createdAt日期 – jordanwillis
正如我的問題所述,所有的createdAt都是用'Date.now()'創建的,這是紀元時間。 –