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

Get a Single Object nested in array MongoDB

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

我正在尝试使用它的 teamid 拉取一个 "clientteams" 嵌套对象。

$user['team']是属于英雄队的一串59dcf4d1fd82f416ac00608d

文档示例

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

PHP 我一直尝试的代码 returns 完整文档。

$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]);

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

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

现在,如果您需要过滤结果,您可以在 $match

之后使用 $project