sql >> Databasteknik >  >> NoSQL >> MongoDB

Letar efter ett sätt att returnera dokument från en annan samling baserat på en uppsättning från en annan, MongoDB

I likhet med "joins" i sql, i Mongo måste du använda "lookup".

För att använda uppslag måste du använda "sammanställd" fråga,

Så frågan du behöver är,

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å vad den här frågan gör,

se "$lookup"-raden ---> från "users"-samlingen, den använder "sensors"-fältet (lokalt fält till din användarsamling som det primära ID:t i sql) och hämta information från "sensor"-samlingen som matchar sensorId (utländska fältet i sensorsamlingen), och lagra resultatet i fältet "sensorDetails".

du kan få tillgång till sensorDetails med "userData[0].sensorDetails".sensorDetails kommer att vara array.

Kontrollera officiella dokument om uppslag Läs även om varva ner



  1. returnera lösa fel i nodfunktion

  2. MongoDB/PHP:ta bort element från array

  3. Javers ENTITY_INSTANCE_WITH_NULL_ID när du använder 2 databaser

  4. MongoDB - DBRef