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.