Mongodb Join " _id " - Feld von String ObjectId

Habe ich zwei Sammlungen

  1. Benutzer

             {
                 "_id" : ObjectId("584aac38686860d502929b8b"),
                 "name" : "John"
             }
  2. Rolle

     {
         "_id" : ObjectId("584aaca6686860d502929b8d"),
         "role" : "Admin",
         "userId" : "584aac38686860d502929b8b"  
     }

Ich joinen will diese Sammlung basiert auf der userId (in Rolle Sammlung) - _id ( in Benutzer Sammlung).

Ich habe versucht, die unter-Abfrage:

db.role.aggregate(
{
   $lookup:
   {
       from: 'user',
       localField: 'userId',
       foreignField: '_id',
       as: 'output'
   }
}
);

Dies gibt mir die erwarteten Ergebnisse, solange ich die speichern die Benutzer-id eine ObjectId. Wenn meine Benutzer id ist eine Zeichenfolge, gibt es keine Ergebnisse.
Ps: ich habe versucht,

foreignField: '_id'.valueOf()

und

foreignField: '_id'.toString()

. Aber kein Glück zu Spiel/join basiert auf einem ObjectId-string-Felder.

Jede Hilfe wird geschätzt.

InformationsquelleAutor Kavya Mugali | 2016-12-12
Schreibe einen Kommentar