2016-04-23 3 views
1

私はイベントコレクションを持っています。イベントのクリックをしなかったユーザーがほしいです。 例 - 私は、次のようになりたいイベントxを実行していないユーザーによるMongoDBグループ

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

答えて

0

私は最初のグループべき文書その後、クリックしたユーザーをフィルタして、結果を希望の形式で表示します。

$collection->aggregate(array(
array('$group' => 
       array(
       '_id' => '$user','events' => array('$push'=>'event') 
      ), 
    array('$match' => array('$events' => array('$not' => 'click'))), 
     array('$project' => array('user' => '$user')), 

)) 
+0

ありがとう。私は理解した。そのシーケンスについて。最初にデータをグループ化し、そのグループ化されたデータに条件を適用します。 –