2016-12-01 2 views
0

Ich möchte die Aufrufe der Mitarbeiter in verschiedenen Sammlungen basierend auf ihrem Typ speichern. Aber ich fürchte, dass ich in der Lage möchte sofort den Inhalt dieser verschiedenen Sammlungen zurückzukehren, wie ich den Inhalt einer Sammlung zurückzukehren verwendet, wie in der unten stehenden Code dargestellt:Ist es möglich, die Dokumente von zwei Sammlungen zurückzugeben?

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

Also meine Sorge ist, wenn ich habe eine andere Sammlung namens Ml, kann ich den Inhalt von und Ml in der gleichen Zeit zurückgeben?

+0

'Collection.find()' gibt einen * Cursor *. Sie können beispielsweise ein * Array * von Cursorn aus einer Publikation zurückgeben. Aber ist das für einen Helfer? –

Antwort

0

Nicht wirklich sicher, ob Ihre Datenstruktur, wenn Sie ein Beispiel nennen könnte es wäre einfacher, mit zu arbeiten, aber das folgende Beispiel nehmen, wo wir eine students und eine teachers Sammlung:

> 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") 
     ] 
} 

Dann können wir die Aggregation Rahmen mit $unwind und $lookup Stufen verwenden:

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

und wir werden die folgende Ausgabe:

{ 
     "_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" 
       } 
     ] 
} 

Refs: https://docs.mongodb.com/v3.2/reference/operator/aggregation/ https://docs.mongodb.com/v3.2/reference/operator/aggregation/lookup/

Verwandte Themen