sql >> Base de Datos >  >> NoSQL >> MongoDB

Buscando una forma de devolver documentos de otra colección basada en un conjunto de otro, MongoDB

Similar a "joins" en sql, en Mongo tienes que usar "lookup".

Para usar la búsqueda, debe usar la consulta "agregada",

Así que la consulta que necesitas es,

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

Entonces, ¿qué está haciendo esta consulta?

vea la línea "$búsqueda" ---> de la colección "usuarios", está usando el campo "sensores" (campo local para su colección de usuarios como la identificación principal en sql) y obtenga información de la colección "sensor" que coincida con sensorId (extranjero en la colección de sensores) y almacene el resultado en el campo "sensorDetails".

puede tener acceso a sensorDetails con "userData[0].sensorDetails".sensorDetails será una matriz.

Consulte los documentos oficiales sobre lookup Lea también sobre unwind