MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Alla ricerca di un modo per restituire documenti da un'altra raccolta basata su un set di un'altra, MongoDB

Simile a "join" in sql, in Mongo devi usare "lookup".

Per usare la ricerca devi usare la query "aggregata",

Quindi la query di cui hai bisogno è,

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);
})

Quindi cosa sta facendo questa query,

vedere la riga "$ lookup" ---> dalla raccolta "users", utilizza il campo "sensors" (campo locale della raccolta utente come l'ID primario in sql) e recupera le informazioni dalla raccolta "sensor" che corrisponde a sensorId (estraneo campo nella raccolta del sensore) e archiviare il risultato nel campo "sensorDetails".

puoi avere accesso a sensorDetails con "userData[0].sensorDetails".sensorDetails sarà array.

Controlla i documenti ufficiali sulla ricerca Leggi anche su unwind