2016-08-09 10 views
1

Bei den Sammlungen:Mongo Lookup Join auf Objekt funktioniert nicht?

data: 
{ "_id" : ObjectId("57a"), "rep" : ObjectId("570"), "label" : "pat" } 
{ "_id" : ObjectId("57b"), "rep" : ObjectId("571"), "label" : "pat" } 

rep: 
{ "_id" : ObjectId("570") } 
{ "_id" : ObjectId("571") } 

db.rep.aggregate ([{$ Lookup: {aus: "data", localField: "rep", foreignField: "_ id", wie: "in_common"} }])

ergibt einen leeren Satz.

Die Abfrage sollte ein Ergebnis mit zwei Zeilen erzeugen.

Wie kann ich das beheben?

Antwort

5

Sie benötigen eine Abfrage zu ändern, wie unten

db.data.aggregate([ { $lookup: {from: "rep", localField:"rep", foreignField:"_ id", as: "in_common" }}])

Diese Abfrage wird liefern Sie zwei Datensätze angezeigt.

Grund für die nicht die Datensätze immer: In Ihrer Sammlung Sie haben keine Zuordnung für data._id rep._id während Sie die Zuordnung von rep._id haben

https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/

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

Hoffe es hilft!

+1

Danke, das funktioniert. Wenn tatsächliche ObjectId-Werte eingefügt werden, scheint die Abfrage zu viele Werte zurückzugeben. Die verwendete Abfrage war: db.data.aggregate ([{$ lookup: {von: "rep", localField: "ObjectId (_id)", fremdesFeld: "ObjectId (rep)", wie: "incommon"}}]) Ist die Suche nach "ObjectId (_id)" gegen "ObjectId (rep)" korrekt formatiert? – user2002858

+0

Das ist toll, bitte markieren Sie die Frage als beantwortet, damit sie für andere hilfreich ist, die das gleiche Problem haben. –

Verwandte Themen