sql >> Database >  >> NoSQL >> MongoDB

Op zoek naar een manier om documenten uit een andere collectie te retourneren op basis van een set uit een andere, MongoDB

Net als bij "joins" in sql, moet je in Mongo "lookup" gebruiken.

Om lookup te gebruiken, moet u de "aggregate"-query gebruiken,

Dus de vraag die je nodig hebt is,

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

Dus wat deze vraag doet,

zie de regel "$lookup" ---> van de verzameling "gebruikers", het gebruikt het veld "sensors" (lokaal veld voor uw gebruikersverzameling zoals de primaire id in sql) en haalt informatie op uit de verzameling "sensor" die overeenkomt met sensorId (buitenlandse veld in sensorverzameling), en sla het resultaat op in het veld "sensorDetails".

u kunt toegang krijgen tot sensorDetails met "userData[0].sensorDetails".sensorDetails zal een array zijn.

Bekijk officiële documenten over lookup Lees ook over ontspannen



  1. $geoNear (geaggregeerde pijplijn) retourneert niet de juiste documenten

  2. Correcte manier om veel records in Mongodb in te voegen met Node.js

  3. Hoe kan ik een regex-variabele gebruiken in een query voor MongoDB?

  4. Hoe TTL definiëren voor redis-streams?