2017-04-12 22 views
0

私は_idとUserIdを持つコレクションと、UserId(同じ一意の識別子)と "その他のデータ"を持つコレクションの2つを持っています。MongoDBクエリ、カーソルを使用してフィルタリング

前者のコレクションの_idのリストに基づいて、後者のコレクションをフィルタリングしたいと考えています。

誰かがこのシナリオのサンプルクエリを提供できますか?

答えて

0

MongoDBの 'join'コレクションの唯一の方法は、$lookup集計ステージ(バージョン3.2で利用可能)です。

firstCollection.aggregate([ 
    { $match: { _id: {$in: [1,2,3] }}}, // filter by _ids 
    { 
    $lookup: 
    { 
     from: "secondCollection", 
     localField: "UserId", 
     foreignField: "UserId", 
     as: "data" 
    } 
    } 
]) 

これは、第2のコレクションのすべての関連ドキュメントを含む最初のコレクションのドキュメントに「データ」フィールドを追加します。関係が1でない場合:1、あなたは結果平らにする$unwindのステージを追加することができます。

{$unwind: "$data"} 
+0

を、私は、バージョン2.6.9を使用している場合は、私が何かできることはありますか? –

+0

@AlexWuはdb側に何もありません。 2つのクエリを実行することができます。まず、UsesrIdsを_idsで取得します。また、UserIdsによってデータを取得する –

関連する問題