MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Търсите начин да върнете документи от друга колекция въз основа на набор от друга, MongoDB

Подобно на „joins“ в sql, в Mongo трябва да използвате „lookup“.

За да използвате търсене, трябва да използвате "обобщена" заявка,

Така че заявката, от която се нуждаете, е,

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

И така, какво прави тази заявка,

вижте реда "$lookup" ---> от колекцията "потребители", той използва полето "сензори" (локално поле към вашата потребителска колекция като основния идентификатор в sql) и извлича информация от колекцията "сензор", съответстваща на сензорния идентификатор (чужд поле в колекция от сензори) и съхранете резултата в полето „sensorDetails“.

можете да имате достъп до sensorDetails с "userData[0].sensorDetails".sensorDetails ще бъде масив.

Проверете официалните документи за търсене Прочетете също за unwind



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Хибернация с MongoDB

  2. дата в MongoDB:при вмъкване на обекти Date в база данни Mongo, датата става 1 ден по-рано от себе си

  3. Как мога да намеря подобни документи в MongoDB?

  4. Как да принудите MongoDB pullAll да пренебрегне реда на документите

  5. Mongo брои наистина бавно, когато има милиони записи