【发布时间】:2014-08-20 15:55:11
【问题描述】:
我有以下格式的数据库
Array
(
[_id] => MongoId Object
(
[$id] => 53f4bf0e8db0d31b0ba802df
)
[userSession] => 580929792589634763f964479eee8721
[pageEnteredDate] => 1408548587
[pageLeftDate] => 1408548622
[userName] => User 1
[userId] => 33657
[pageView] => monitoring patients
[pageActions] => []
[pageTag] => 1-3-16-131-315
[timeSpent] => 35
)
Array
(
[_id] => MongoId Object
(
[$id] => 53f3d7008db0d33e61cae841
)
[userSession] => e04e5081c9482654030bacf3c8c90b21
[pageEnteredDate] => 1408488536
[pageLeftDate] => 1408489216
[userName] => user 2
[userId] => 4278
[pageView] => Surgery Staff
[pageActions] => [["BUTTON","Comment",1408488701],["A","Discussion",1408488712]]
[pageTag] => 1-3-5-148
[timeSpent] => 680
)
Array
(
[_id] => MongoId Object
(
[$id] => 53f3d7008db0d33gj1cae841
)
[userSession] => e04e5081c9482654030bahjhc8c90b21
[pageEnteredDate] => 1408488536
[pageLeftDate] => 1408489216
[userName] => user 3
[userId] => 428
[pageView] => Surgery Staff
[pageActions] => [["BUTTON","Comment",1408488701],["A","Discussion",1408488712]]
[pageTag] => 1-3-5-148
[timeSpent] => 680
)
pageEnteredDate 是我要使用的日期
我想按页面标签和日期对数据进行分组。我的意思是有一天我应该只获得一次相同的 pageTag。
因此,从这 3 个数组中它应该只显示 2 个,因为 2 个具有相同的 pageTag 并且在同一天。
谢谢
***使用的代码
$result = $this->collection->aggregate(
array(
array(
'$group' => array(
'_id'=> array( 'pageTag' => '$pageTag','day' => array('$subtract' => array('$pageEnteredDate', 86400))),
'timeSpent' => array( '$sum' => '$timeSpent' ),
'lastView' => array( '$max' => '$pageEnteredDate' )
)
),
array('$skip' => 0),
array('$limit' => 20)
)
);
【问题讨论】:
标签: php mongodb mongodb-query aggregation-framework