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

Leder efter en måde at returnere dokumenter fra en anden samling baseret på et sæt fra en anden, MongoDB

I lighed med "joins" i sql, skal du i Mongo bruge "lookup".

For at bruge opslag skal du bruge "samlet" forespørgsel,

Så den forespørgsel, du har brug for, er,

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

Så hvad denne forespørgsel gør,

se "$lookup"-linjen ---> fra "users"-samlingen, den bruger "sensors"-feltet (lokalt felt til din brugersamling som det primære id i sql) og hent info fra "sensor"-samlingen, der matcher sensorId (fremmed felt i sensorsamling), og gem resultatet i feltet "sensorDetails".

du kan få adgang til sensorDetails med "userData[0].sensorDetails".sensorDetails vil være array.

Tjek officielle dokumenter om opslag Læs også om slap af



  1. Tildel mongoose return resultat til node js variabel

  2. Hvordan bruger man variabler i MongoDB-forespørgsel?

  3. MongoDB $setEquals

  4. mongodb connect ved hjælp af php