2016-12-01 1 views
0

従業員の控訴をその種類に基づいて異なるコレクションに保存したいと考えています。しかし、私は、私は以下のコードに示すように、コレクションの内容を返すために使用されるように、一度にこれらの異なるコレクションのコンテンツを返すことができたいと怖いです:2つのコレクションの文書を返すことはできますか?

pendingAppeals = function() { 
    return Al.find({status: "Pending"}); 
} 

だから私の懸念は、私があれば、ですMlという別のコレクションがある場合、とMlの両方のコンテンツを同時に返すことはできますか?

+0

'Collection.find()' *カーソルを返します。たとえば、パブリケーションからカーソルの*配列*を返すことができます。しかし、これはヘルパーのためですか? –

答えて

0

あなたが使用しているmongoのバージョンと流星がそれをサポートしているかどうかはわかりません。しかし、mongo 3.2には、あなたの状態に応じて複数のコレクションからデータを取り出す集約型結合があります。参照してください:https://docs.mongodb.com/v3.2/reference/operator/aggregation/lookup/

0

ない本当にあなたのデータ構造について、あまりにも必ず、あなたが例を提供することができれば、で動作するように容易になるだろう、しかし、我々はstudentsteachersコレクションを持って、次の例取る:

> db.students.find() 
{ "_id" : ObjectId("584020b6410ebb5a4ea03393"), "name" : "bob" } 
{ "_id" : ObjectId("584020b6410ebb5a4ea03394"), "name" : "foo" } 
{ "_id" : ObjectId("584020b7410ebb5a4ea03395"), "name" : "bill" } 

> db.teachers.find().pretty() 
{ 
     "_id" : ObjectId("584020e7410ebb5a4ea03396"), 
     "name" : "t 1", 
     "studentIds" : [ 
       ObjectId("584020b6410ebb5a4ea03393"), 
       ObjectId("584020b7410ebb5a4ea03395") 
     ] 
} 
{ 
     "_id" : ObjectId("584020ff410ebb5a4ea03397"), 
     "name" : "t 1", 
     "studentIds" : [ 
       ObjectId("584020b6410ebb5a4ea03394"), 
       ObjectId("584020b7410ebb5a4ea03395") 
     ] 
} 

その後、我々は$unwind$lookup段階で集約フレームワークを使用することができます。

db.teachers.aggregate([ 
    {$unwind: "$studentIds"}, 
    {$lookup: { 
     from: "students", 
     localField: "studentIds", 
     foreignField: "_id", 
     as: "students" 
     } 
    } 
]) 

を、私たちは次のような出力が得られます:

{ 
     "_id" : ObjectId("584020e7410ebb5a4ea03396"), 
     "name" : "t 1", 
     "studentIds" : ObjectId("584020b6410ebb5a4ea03393"), 
     "students" : [ 
       { 
         "_id" : ObjectId("584020b6410ebb5a4ea03393"), 
         "name" : "bob" 
       } 
     ] 
} 
{ 
     "_id" : ObjectId("584020e7410ebb5a4ea03396"), 
     "name" : "t 1", 
     "studentIds" : ObjectId("584020b7410ebb5a4ea03395"), 
     "students" : [ 
       { 
         "_id" : ObjectId("584020b7410ebb5a4ea03395"), 
         "name" : "bill" 
       } 
     ] 
} 
{ 
     "_id" : ObjectId("584020ff410ebb5a4ea03397"), 
     "name" : "t 1", 
     "studentIds" : ObjectId("584020b6410ebb5a4ea03394"), 
     "students" : [ 
       { 
         "_id" : ObjectId("584020b6410ebb5a4ea03394"), 
         "name" : "foo" 
       } 
     ] 
} 
{ 
     "_id" : ObjectId("584020ff410ebb5a4ea03397"), 
     "name" : "t 1", 
     "studentIds" : ObjectId("584020b7410ebb5a4ea03395"), 
     "students" : [ 
       { 
         "_id" : ObjectId("584020b7410ebb5a4ea03395"), 
         "name" : "bill" 
       } 
     ] 
} 

参考文献: https://docs.mongodb.com/v3.2/reference/operator/aggregation/https://docs.mongodb.com/v3.2/reference/operator/aggregation/lookup/