2017-03-12 1 views
0

ich eine „Firma“ Sammlung wie diese:MongoDB direkter Zugang zu ObjectId

{ 
    "_id" : ObjectId("58c52a26de0bdd9311000004"), 
    "name" : "ed", 
    "projects" : [ ], 
    "__v" : 0, 
    "users" : [ 
    ObjectId("58c52a36de0bdd9311000007"), 
    ObjectId("58c52a54de0bdd931100000a") 
    ] 
} 

ich ein paar Informationen von den Nutzern erhalten möge; Muss ich eine Abfrage durchführen, um die ObjectID und die andere Abfrage an jeden der Benutzer zu erhalten?

Oder gibt es eine Möglichkeit, diese Informationen direkt von der Abfrage an die Firma zu bekommen?

Antwort

1

können Sie verwenden Lookup-Aggregation die Daten von Benutzern Sammlung zu erhalten unter der Annahme sowohl die Sammlungen in derselben Datenbank sind.

Führt eine linke Außen zu einer unsharded Sammlung in der gleichen Datenbank in Dokumenten zu filtern, kommt aus der Sammlung für Verarbeitung „verbunden“. Die $ lookup-Phase führt eine Gleichheitsübereinstimmung zwischen einem Feld aus den Eingabedokumenten mit einem Feld aus den Dokumenten der "zusammengefügt" -Auflistung durch.

Basic-Syntax: -

{ 
    $lookup: 
    { 
     from: <collection to join>, 
     localField: <field from the input documents>, 
     foreignField: <field from the documents of the "from" collection>, 
     as: <output array field> 
    } 
} 

MongoDB lookup

+0

Name Funktion? – notionquest

+0

bevölkern, http://mongoosejs.com/docs/populate.html Nachschlagen Aggregation funktioniert gut btw – cagigas

+1

In Plain MongoDB ist es Nachschlagen. Ja, Populate ist die ähnliche API auf Mongoose. – notionquest