【问题标题】:How can you use multiple ids in mongo aggregate $group when performing $dateToString on one of the ids在其中一个 id 上执行 $dateToString 时,如何在 mongo 聚合 $group 中使用多个 id
【发布时间】:2020-08-09 08:56:35
【问题描述】:

我想使用 $dateToString 以便我的数据按每天拆分,并且我还想按日志名分组。

如果我不使用 $dateToString,则按日期和日志名分组有效,但是每个条目都按每个特定时间拆分,因为日期以 mongos 默认格式存储(“2020-04-21T02:06:26.139Z”

问题似乎是在尝试使用 $dateToString 转换日期同时拥有另一个 id 时

这是独立的(每天分组)

Entry.aggregate(
    [{                
          $group: {
                    _id: { $dateToString: { format: "%d-%m-%Y", date: "$date" } },
},},],

这是我想做的,但它不起作用

Entry.aggregate(
    [{                
          $group: {
                 _id: { $dateToString: { format: "%d-%m-%Y", date: "$date" }, logname: "$logname"}, 

},},],

这在没有上述 $date 转换的情况下有效(按每个特定时间和日志名分组)

Entry.aggregate(
    [{                
            $group: {
                   _id: { date: "$date", logname: "$logname" },                    
},},],

错误是

"errmsg": "An object representing an expression must have exactly one field: { $dateToString: { format: \"%d-%m-%Y\", date: \"$date\" }, logname: \"$logname\" }",

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework


    【解决方案1】:

    我只需要命名格式化的日期(命名为 dateFormated)

    _id: { dateFormated: { $dateToString: { format: "%d-%m-%Y", date: "$date" }}, logname: "$logname"}, 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 2021-12-28
      • 2022-01-20
      • 1970-01-01
      相关资源
      最近更新 更多