MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Vous cherchez un moyen de renvoyer des documents d'une autre collection basée sur un ensemble d'une autre, MongoDB

Semblable aux "jointures" dans sql, dans Mongo, vous devez utiliser "lookup".

Pour utiliser la recherche, vous devez utiliser une requête "agrégée",

Donc la requête dont vous avez besoin est,

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

Alors, que fait cette requête,

voir la ligne "$ lookup" ---> de la collection "users", il utilise le champ "sensors" (champ local de votre collection d'utilisateurs comme l'identifiant principal dans sql) et récupère les informations de la collection "sensor" correspondant à sensorId (foreign champ dans la collection de capteurs) et stockez le résultat dans le champ "sensorDetails".

vous pouvez avoir accès à sensorDetails avec "userData[0].sensorDetails".sensorDetails sera un tableau.

Consultez les documents officiels sur lookup Lisez également à propos de unwind