关于meteor:如何使用mongodb聚合保存一个UNIX时间戳 | 珊瑚贝

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 日期戳?


实现你可以做到的:

  • 在 $project 阶段添加 t 字段并继续通过管道填充它 – 因此将始终引用原始时间戳
  • 创建 dateTime 字段 \\’time: new Date(“$_id.year”, “$_id.month”, “_id.day”);\\’
  • 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”)
            }
        }
    };

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


    来源:https://www.codenong.com/37431192/

    微信公众号
    手机浏览(小程序)

    Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9135.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
    0
    分享到:
    没有账号? 忘记密码?