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”, } 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 : { |
- 所以你是说我使用更新来制作时间字段?只是我试图在 mongodb 中保留尽可能多的内容,以便处理更大的数据
- @AngusW 有时间字段而不是纪元将加速所有操作(无需转换)
- 谢谢你帮助我,我现在只是在学习这些更高级的 mongo 系统,无法获得一个工作的新领域。只需仔细检查新字段是否正确位于 $group 中?你能告诉我它会去哪里吗>
- @AngusW 刚刚添加了修改后的 group 语句,顺便说一下 sys 字段需要被推送到数组,因为它不能在组管道中独立存在
来源:https://www.codenong.com/37431192/