0

をフィールドの数を数えます。私はユーザーのコレクションからユーザーID 57b83ae9faa76bac338b4579のbadge_slug = 100_clubを持つすべてのバッジを数えたいと思います。私がやっていることのMongoDB PHP:以下<a href="https://github.com/intekhabrizvi/Codeigniter-mongo-library" rel="nofollow">https://github.com/intekhabrizvi/Codeigniter-mongo-library</a></p> <p>は私のコレクション「ユーザー」であるMongoDBのライブラリと私はCodeIgniterのを使用していたサブ文書に

{ 
"_id" : ObjectId("57b83ae9faa76bac338b4579"), 
"displayname" : "test", 
"email" : "[email protected]", 
"badges" : [ 
    { 
     "awarded_at" : ISODate("2015-04-21T05:52:06Z"), 
     "object_id" : "", 
     "badge_slug" : "100_club" 
    }, 
    { 
     "awarded_at" : ISODate("2015-04-21T06:12:14Z"), 
     "object_id" : "", 
     "badge_slug" : "100_club" 
    }, 
    { 
     "awarded_at" : ISODate("2015-04-21T07:09:55Z"), 
     "object_id" : "", 
     "badge_slug" : "reader" 
    } 
] 
} 

$ops = array(
    array(
     "$project" => array(
      "count" => array(
       "$size" => array(
        "$filter" => array(
         "input" => "$badges", 
         "as" => "badge", 
         "cond" => array("$eq" => => array("$$badge.badge_slug", "100_club")) 
        ) 
       ) 
      ) 
     ) 
    ), 
    array(
     "$group" => array(
      "_id" => null, 
      "total" => array("$sum" => "$count") 
     ) 
    ) 
); 
$this->mongo_db->aggregate("users", $ops); 

だから結果が与えられた文書のための2をあるべきです。 しかし、すべてのユーザーのカウントが返されます。ユーザーIDの条件はどこで行う必要がありますか?

答えて

0

$matchを使用すると、ドキュメントを次の段階に渡す前にフィルタすることができます。

関連する問題

 関連する問題