How to preserve a UNIX datestamp with mongodb aggregation
我想在meteor/MongoDB 中聚合数据。我有几千个条目,格式如下
1 | {_id: sadsadjhsjdys7ad67as8d, t: 1464162907, prod: 123, sys: xyz} |
我想将它们分类为它们的相对日期并聚合 prod 字段。
我目前有以下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | var project = { "$project" : { "_id" : 0, "y" : { "$year" : { "$add" : [ new Date(0), { "$multiply" : [1000,"$t"] } ] } }, "m" : { "$month" : { "$add" : [ new Date(0), { "$multiply" : [1000,"$t"] } ] } }, "d" : { "$dayOfMonth" : { "$add" : [ new Date(0), { "$multiply" : [1000,"$t"] } ] } }, "prod" :"$prod", "sys" :"$sys" } }; var group = { "$group" : { "_id" : { "year" :"$y", "month" :"$m", "day" :"$d", "test" :"$test" }, sys :"sys", prod : { $sum :"$prod" } } }; var result = power_stats.aggregate([match, project, group]); |
但是,这使我的 _id 变为 [y: 2016, m: 5, d: 25] 这是我想要的聚合形式,但是如果我想稍后对日期进行条件查找,它将完全没用有了这个数据。
如何使用 MongoDBe 聚合保留 UNIX 日期戳?
实现你可以做到的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var group = { "$group" : { "_id" : { "year" :"$y", "month" :"$m", "day" :"$d", "test" :"$test" }, prod : { $sum :"$prod" }, dateTime : { $addToSet : new Date("$_id.year","$_id.month","$_id.day") } } }; |