获取嵌套在数组MongoDB中的单个对象

时间:2017-11-07 14:50:35

标签: php arrays mongodb object cursor

我一直在尝试使用MongoDB Database对象数组中的find或findOne查询单个对象。

我试图使用它的teamid来拉出“clientteams”嵌套对象。

$ user ['team']是属于英雄团队的59dcf4d1fd82f416ac00608d的字符串。

文件示例

{  
   "_id":ObjectId("5a018682a8102a27349741cc"),
   "clientteams":[  
      {  
         "teamid":ObjectId("59dcf4d1fd82f416ac00608d"),
         "name":"heroes"
      },
      {  
         "teamid":ObjectId("59dde7effd82f42c6000062a",
         "name":"villions"
      }
   ]
}

我试过的PHP代码总是返回完整的文档。

$team = $collection->findOne(['clientteams.teamid' => new MongoDB\BSON\ObjectID( $user['team'] )],[ 'clientteams' => [ '$elemMatch' => [ 'teamid' => $user['team'] ]]]);

$team = $collection->findOne(['clientteams.teamid' => new MongoDB\BSON\ObjectID( $user['team'] )], ['clientteams.$' => 1]);

1 个答案:

答案 0 :(得分:0)

对于这种情况类型,您需要使用聚合,我确实做了测试并且它有效,这是一个查询:

    YOUR_COLLECTION.aggregate([
        { $unwind: "$clientteams" },
        { $match: { "clientteams.teamid": ObjectId("59dcf4d1fd82f416ac00608d")} }    
    ]);

现在,如果您需要过滤结果,可以在 $ match 之后使用 $ project