2017-11-07 10 views
0

私は、オブジェクトのMongoDBデータベース配列からfindまたはfindOneを使って単一のオブジェクトを照会しようとしました。配列内にネストされた単一のオブジェクトを取得するMongoDB

"clientteams"ネストされたオブジェクトをそのteamidを使用してプルしようとしています。

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

答えて

0

、あなたは集計を使用する必要がある、私はテストをしましたし、それが働いていた、これはクエリです:今

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

、あなたの必要性は、結果をフィルタリングしている場合、あなたは$$

+0

の後に使用することができますそれはまさにそれです、ありがとう – daatyson

関連する問題