MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Suchen Sie nach einer Möglichkeit, Dokumente aus einer anderen Sammlung basierend auf einem Satz aus einer anderen, MongoDB, zurückzugeben

Ähnlich wie bei „Joins“ in SQL müssen Sie in Mongo „Lookup“ verwenden.

Um die Suche zu verwenden, müssen Sie eine "aggregierte" Abfrage verwenden,

Also Abfrage, die Sie brauchen, ist,

db.collection('users').aggregate({$match:{ email: 'example_email' }},
    {$unwind:{path:"$sensors"}},
    {$lookup:{from:"sensor", localField: "sensors", foreignField:"sensorId", as:"sensorDetails"}},
(err, userData)=>{
      console.log(userData);
})

Also, was macht diese Abfrage,

siehe "$lookup"-Zeile ---> aus der "users"-Sammlung, es verwendet das Feld "sensors" (lokales Feld zu Ihrer Benutzersammlung wie die primäre ID in SQL) und ruft Informationen aus der "sensor"-Sammlung ab, die mit der sensorId (fremd Feld in der Sensorsammlung) und speichern Sie das Ergebnis im Feld "sensorDetails".

Sie können mit "userData[0].sensorDetails" auf sensorDetails zugreifen. SensorDetails werden ein Array sein.

Überprüfen Sie die offiziellen Dokumente zu lookup Lesen Sie auch über unwind