MongoDB 按未执行事件 x 的用户分组


MongoDB Group by users having not performed event x

>我有一个事件集合。我希望用户没有执行事件点击。例-

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') ),
))