2016-11-19 8 views
0

たとえば、単語の共通部分を取得したいMongoDBには、いくつかのコレクションがあります。複数のコレクションから一意の単語セットを取得するMongoDB

    fruit db 
     fresh fruit  |  dried fruit  | 
-------------------------|------------------------- 
{ "type": "apple" }   { type: "apple" } 
{ "type": "orange" }   { type: "peach" } 
{ "type": "peach" }   { type: "pineapple" } 
{ "type": "pear" }   { type: "grape" } 
{ "type": "watermelon" }  { type: "mango" } 
{ "type": "grape" }   { type: "plum" } 

上記の例からわかるように、新鮮で乾燥した果物がありますが、各コレクションの間に同様の項目があります。 2つ以上のコレクションが存在する可能性もあります。

このデータベースのクエリを実行して、各コレクションの同じ種類の果物をすべて見つけることができます。

リンゴ、桃、ブドウは両方のコレクションに入っているので、そのようなデータを抽出する方法はありますか?

答えて

0

これには$lookupコマンドを使用できます。一般的な「freshFruit」の果物と、次のようなクエリを使用することができ、「driedFruit」のコレクションを検索するには:あなたはすべてのコレクション内に存在するすべての果実を取得する果物で

db.freshFruit.aggregate([ 
    { 
     $lookup: { 
      from: "driedFruit", 
      localField: "type", 
      foreignField: "type", 
      as: "fruit" 
     } 
    }, 
    { 
     $match: { "fruit": { $ne: [] } } 
    } 
]); 
0
` 
db.freshFruit.aggregate([ 
     { 
     $lookup: { 
      from: "driedFruit", 
      localField: "type", 
      foreignField: "type", 
      as: "fruit" 
        } 
     }, 
     {$match: { "fruit": { $ne: [] } }}, 
     //Add another lookup and match to join another collection and at last use    $ group stage 
     { $group: { "_id": null,fruits : {$push :$type}}} 
]); 

`

関連する問題