MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Procurando uma maneira de retornar documentos de outra coleção com base em um conjunto de outra, MongoDB


Semelhante ao "joins" no sql, no Mongo você precisa usar "lookup".

Para usar a pesquisa, você deve usar a consulta "agregada",

Então, a consulta que você precisa é,
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);
})

Então, o que esta consulta está fazendo,

veja a linha "$lookup" ---> da coleção "users", está usando o campo "sensors" (campo local para sua coleção de usuários como o id primário no sql) e busca informações da coleção "sensor" correspondente ao sensorId (estrangeiro campo na coleção de sensores) e armazenar o resultado no campo "sensorDetails".

você pode ter acesso a sensorDetails com "userData[0].sensorDetails".sensorDetails será array.

Verifique os documentos oficiais sobre pesquisa Leia também sobre descontrair