2016-12-23 3 views
0

Ich habe zwei Sammlungen und ich habe eine Sammlung von Daten in MongoDBmongodb Aggregat Lookup mehrere ObjectId in Objekt

db.user.insert({"_id" : ObjectId("585d627fe4ff58cb1c456780"), "name":"Alfred"}); 
db.user.insert({"_id" : ObjectId("585d60b5e4ff58cb1c45677f"), "name":"Bruce"}); 
db.role.insert({"_id" : ObjectId("585d5f7cdb83cb696b82f2cf"),"status" : "admin"}); 
db.data.insert(
"security": [ 
    {"idUser" : ObjectId("585d627fe4ff58cb1c456780"), "idRole" : ObjectId("585d5f7cdb83cb696b82f2cf")}, 
    {"idUser" : ObjectId("585d60b5e4ff58cb1c45677f"), "idRole" : ObjectId("585d5f7cdb83cb696b82f2cf") }]); 

Wenn ich diese Bedingung ausführen das Array

db.data.aggregate([ 
      { $lookup: {from: "user", localField: "user.idUser", foreignField: "_id", as: "user_admin"} }, 
      {$unwind:"$user_admin"}, 
]); 

leer zurück Ich wollte die bringen zwei ausgefüllt Felder mit den Attributen der einzelnen Objekte im Array, bin ich sehr dankbar, jemand, der mir hilft

+0

Diese korrekte db.data.aggregate ([ {$ Lookup: {aus: "user", localField: "security.idUser", foreignField: "_id", wie: "user_admin"}}, {$ unwind: "$ user_admin"}, ]); – user2350939

Antwort

0

Um über die Sicherheit zu aggregieren, müssen Sie es und die n Nachschlagen. Diese Abfrage sollte funktionieren:

db.data.aggregate([ 
      {$unwind: "$security"}, 
      {$lookup: {from: "user", localField: "security.idUser", foreignField: "_id", as: "user_admin"}}, 
      {$unwind:"$user_admin"} 
]); 
+0

Es gibt nur das erste Element des Arrays zurück, es bringt nicht die anderen Elemente – user2350939