>我有一个事件集合。我希望用户没有执行事件点击。例-
collection -
{
'event' : 'open'
'user' : 1
},
{
'event' : 'open'
'user' : 2
},
{
'event' : 'click'
'user' : 2
}
我想要的结果如下:
{ 'user' : 1 }
我得到的是:
{ 'user' : 1 },
{ 'user' : 2 }
我的代码 :
$collection->aggregate(array(
array('$match' => array('$event' => array('$not' => 'click')) ),
array('$group' =>
array(
'_id' => '$user'
),
)
))
我应该首先对文档进行分组,然后过滤尚未单击的用户,然后以您喜欢的格式投影结果。
$collection->aggregate(array(
array('$group' =>
array(
'_id' => '$user','events' => array('$push'=>'event')
),
array('$match' => array('$events' => array('$not' => 'click')) ),
array('$project' => array('user' => '$user') ),
))