我有一个包含如下文档的集合:
{
_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)
有没有办法重写日期以只考虑日期并跳过时间?
我找到了这个例子,但我真的不知道如何使它适应这个例子。
如果 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)