sql >> Databáze >  >> NoSQL >> MongoDB

Hledáte způsob, jak vrátit dokumenty z jiné kolekce na základě sady z jiné, MongoDB

Podobně jako u "joins" v SQL, v Mongo musíte použít "lookup".

Chcete-li použít vyhledávání, musíte použít "agregační" dotaz,

Takže dotaz, který potřebujete, je,

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

Co tedy tento dotaz dělá,

viz řádek "$lookup" ---> z kolekce "users", používá pole "sensors" (místní pole do vaší uživatelské sbírky jako primární id v sql) a načte informace z kolekce "sensor" odpovídající sensorId (cizí pole v kolekci senzorů) a výsledek uložte do pole „sensorDetails“.

můžete mít přístup k sensorDetails pomocí "userData[0].sensorDetails".sensorDetails bude pole.

Podívejte se na oficiální dokumenty o hledání Přečtěte si také o uvolnění



  1. MongoDB findOne()

  2. Nelze použít BsonIgnoreIfDefault pro vlastnost typu long

  3. jak vypočítat počet a jedinečný počet přes dvě pole ve funkci mongo snížení

  4. Jak `mongoose` zpracovává přidávání dokumentů, které mají POLE, která __NENÍ__ součástí schématu?