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

MongoDB - příklad manuálových odkazů

Dokumentace je docela jasná v části manuálu, na kterou odkazujete, což je část o Reference databáze . Nejdůležitější část pro pochopení tohoto je obsažena v úvodním prohlášení na stránce:

Další informace pokrývají téma, jak byste mohli rozhodnout se zabývat se přístupem k datům, která ukládáte v jiné kolekci.

Existuje DBRef specifikace, která, aniž bychom zacházeli do přílišných podrobností, může být implementován v některých ovladačích tak, že když je najdete ve vašich dokumentech, automaticky načtou (rozbalí) odkazovaný dokument do aktuálního dokumentu. To by bylo implementováno "za scénou" s jiným dotazem na tuto kolekci pro dokument tohoto _id.

V případě Manuální reference to v podstatě říká, že ve vašem dokumentu je pouze pole, které má jako obsah ObjectId z jiného dokumentu. To se liší pouze od DBRef jako něco, co nikdy nebude být zpracován implementací základního ovladače je ponecháno pouze na vás, jak naložíte s dalším získáváním tohoto jiného dokumentu.

V případě:

> db.collection.findOne()

{
   _id: <ObjectId>,
   name: "This",
   something: "Else",
   ref: <AnotherObjectId>
}

ref pole v dokumentu není nic jiného než prosté ObjectId a nedělá nic zvláštního. To vám umožní odeslat svůj vlastní dotaz k získání podrobností o objektu, na které se odkazuje:

> db.othercollection.findOne({ _id: <AnotherObjectId > })
{
  _id: <ObjectId>
  name: "That"
  something: "I am a sub-document to This!"
}

Mějte na paměti, že všechny tyto procesy na straně klienta přes rozhraní API ovladače. Žádné z těchto načítání dalších dokumentů se na serveru v žádném případě neděje.




  1. Vypršení platnosti oznámení o prostoru klíče Redis se nespouští

  2. Existují nějaké nástroje pro migraci schémat pro databáze NoSQL?

  3. Textové vyhledávání vnořených objektů v mongoDB

  4. Jak sloučit pole pole v dokumentu v agregaci Mongo