Php 我如何使用Mongo聚合来获取总“值”;网页浏览量“;每组天
我已经尝试了几天,现在拿出一个工作总量,但我只是没有得到它 我有一个类似于下面的集合Php 我如何使用Mongo聚合来获取总“值”;网页浏览量“;每组天,php,mongodb,mongodb-php,database,Php,Mongodb,Mongodb Php,Database,我已经尝试了几天,现在拿出一个工作总量,但我只是没有得到它 我有一个类似于下面的集合 _id: ObjectId("52672ca368a56f481d000045"), totalviews: 5, views: [ {date: ISODate("2013-10-23T01:55:47Z") }, {date: ISODate("2013-10-23T01:55:50Z") }, {date: ISODate("2013-10-23T23:31:08Z")}, {et
_id: ObjectId("52672ca368a56f481d000045"),
totalviews: 5,
views: [
{date: ISODate("2013-10-23T01:55:47Z") },
{date: ISODate("2013-10-23T01:55:50Z") },
{date: ISODate("2013-10-23T23:31:08Z")},
{etc.}
]
我想做的是获取每天的总浏览量,这样我就可以显示日期列表(从“浏览量”中)以及这些天的总浏览量
有人能告诉我怎么做吗
多谢各位
编辑-下面的代码工作正常
以下是提供的解决方案的php代码,以防它帮助其他人:
$ops = array(
array('$unwind' => '$views'),
array('$project' => array('date'=>array(
'day'=>array('$dayOfMonth'=>'$views.date'),
'month'=>array('$month'=>'$views.date'),
'year'=>array('$year'=>'$views.date'))
)),
array('$group'=>array('_id'=>'$date','views'=>array('$sum'=>1)))
);
$data = $collection->aggregate($ops);
这应该能奏效
db.foo.aggregate(
{$unwind:“$views”},
{$project:{日期:{
日期:{$dayOfMonth:$views.date},
月份:{$month:$views.date},
年份:{$year:$views.date},
}}},
{$group:{{id:{id:$id],日期:$date},视图:{$sum:1}}
)
如果希望收集每天的总视图数,请将组阶段替换为此阶段:
{$group: {_id: "$date", views: {$sum: 1}}}
请提供示例输入和预期输出。现在你的问题不清楚。您希望按天查看每个文档还是按天查看每个集合?你还应该展示你迄今为止所做的努力。谢谢,这很有效。我不知道如何正确地分开约会。