Mongodb 按天聚合分组 (php)

Hen*_*alg 3 php mongodb

我有一个包含如下文档的集合:

{
    _id: ObjectId("516eb5d2ef4501a804000000"),
    accountCreated: "2013-04-17 16:46",
    accountLevel: 0,
    responderCount: 0
}
Run Code Online (Sandbox Code Playgroud)

我想根据 accountCreated 日期(每天计数)对这些文档进行分组和计数,但由于日期也包括时间,因此我一直在处理日期。这就是我所拥有的,但它返回包括时间在内的计数,女巫意味着很多条目总是以 1 作为帐户。

$g = $form->mCollectionUsers->aggregate(array(
    array( '$group' => array( '_id' => '$accountCreated', 'accounts' => array( '$sum' => 1 ) ) )
));
Run Code Online (Sandbox Code Playgroud)

有没有办法重写日期以只考虑日期并跳过时间?

我找到了这个例子,但我真的不知道如何使它适应这个例子。

joa*_*oao 5

如果 accountCreated 是一个日期,你可以这样做(我将使用 mongo shell 语法,因为我不熟悉 php 驱动程序):

db.mCollectionUsers.aggregate([
    {$project :{
        day : {"$dayOfMonth" : "$accountCreated"},
        month : {"$month" : "$accountCreated"},
        year : {"$year" : "$accountCreated"}
    }},
    {$group: {
        _id : {year : "$year", month : "$month", day : "$day"},
        accounts : { "$sum" : 1}
    }}
]);
Run Code Online (Sandbox Code Playgroud)