2

场景:考虑一下,我在 MongoDB 中有以下集合:

{
    "_id" : "CustomeID_3723",    
    "IsActive" : "Y",
    "CreatedDateTime" : "2013-06-06T14:35:00Z"
}

现在我想知道在特定日期(比如 2013-03-04)创建的文档的数量所以,我正在尝试使用聚合框架找到解决方案。

信息:到目前为止,我已经构建了以下查询:

    collection.aggregate([
        { $group: {
            _id: '$CreatedDateTime'
            }
        },
        { $group: {
            count: {  _id: null, $sum: 1 }
            }
        },
        { $project: {
            _id: 0,
            "count" :"$count"
            }
        }
    ])

问题:现在考虑上面的查询,它给了我计数。但不是仅基于日期!它还需要时间来考虑唯一计数。

问题:考虑到该字段有 ISO 日期,谁能告诉我如何仅根据日期(即不包括时间)计算文件?

4

1 回答 1

6

将您的两组替换为

{$project:{day:{$dayOfMonth:'$createdDateTime'},month:{$month:'$createdDateTime'},year:{$year:'$createdDateTime'}}},
{$group:{_id:{day:'$day',month:'$month',year:'$year'}, count: {$sum:1}}}

您可以在此处阅读有关日期运算符的更多信息:http: //docs.mongodb.org/manual/reference/aggregation/#date-operators

于 2013-06-06T11:07:48.740 回答