MongoDB 获取当前日期的文档

标签 mongodb mongodb-query aggregation-framework

我有一个如下的文档,现在我想按 channel 、年月和月中的某一天进行分组,然后我想选择当前日期的记录。这是我的文档:

{
    "_id" : ObjectId("56de5eab29f9463baf6eb7d2"),
    "created_at" : ISODate("2016-03-08T05:10:03.854Z"),
    "updated_at" : ISODate("2016-03-08T05:10:03.854Z"),
    "channel" : "040403",
    "countrycode" : "IN",
    "distinctid" :       "abc123456",   
    "os" : "Android"
}

我写了一个这样的聚合:

db.collection.aggregate([
    {$project: {              
              "channel":"$channel",
              "year": {$year: "$created_at" },
              "month: {$month: "$created_at" },
              "day": {$dayOfMonth: "$created_at" }
         },
         {$match: {
             "year": new Date().getFullYear(),
             "month": new Date().getMonth() + 1, 
             "day": new Date().getDate()     
         },         
         {$group:
             {{"_id":{"channel":"$channel",
                       year: {$year: "$created_at" },
                       month: {$month: "$created_at" },
                       day: {$dayOfMonth: "$created_at" }},
              "count":{"$sum":1}
             }
          }
    ]
)

但是,它说

missing : after property id @(shell):1:108

我的想法正确吗?为什么语法错误? 谢谢

最佳答案

您的查询有两个问题:

  1. 每个阶段您都错过了相当多的结束 }
  2. 您按整数类型的字段()进行分组,但是您应用需要 Date 字段的聚合运算符($year$month$day)。

试试这个查询:

db.collection.aggregate([{
    $project: {
        "channel": "$channel",
        "year": { $year: "$created_at" },
        "month": { $month: "$created_at" },
        "day": { $dayOfMonth: "$created_at" }
    }
}, {
    $match: {
        "year": new Date().getFullYear(),
        "month": new Date().getMonth() + 1,
        "day": new Date().getDate()
    }
}, {
    $group: {
        "_id": { "channel": "$channel", year: "$year", month: "$month", day: "$day" },
        "count": { "$sum": 1 }
    }
}]);

关于MongoDB 获取当前日期的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35885180/

相关文章:

MongoDB - 如何将浮点值截断为一个或两个小数点?

node.js - 在 mongodb 本地时区聚合

node.js - 查询父级时如何获取 Mongoose 子文档数组中值的聚合总和?

mongodb - 查找数组中共享相同值的所有文档

javascript - 查找与顺序无关紧要的嵌套数组的精确匹配

node.js - nodejs + mongo + find + $和错误: Can't canonicalize query

arrays - 如何更新 mongoDB 数组中的所有特定元素?

java - 如何将 MongoDB 结果从 $dateToString 操作转换为 Java 对象

MongoDB 列表 - 获取每第 N 个项目

node.js - Mongo 查询没有给出聚合函数的准确结果