De documentatie is vrij duidelijk in het handmatige gedeelte waarnaar u verwijst, het gedeelte over Databasereferenties . Het belangrijkste deel om dit te begrijpen staat in de openingsverklaring op de pagina:
De verdere informatie behandelt het onderwerp hoe u misschien ervoor kiezen om toegang te krijgen tot gegevens die u in een andere verzameling opslaat.
Er is de DBRef specificatie die zonder al te veel in detail te treden, misschien worden in sommige stuurprogramma's geïmplementeerd zodat wanneer deze in uw documenten worden gevonden, ze automatisch het document waarnaar wordt verwezen, ophalen (uitvouwen) naar het huidige document. Dit zou "achter de schermen" worden geïmplementeerd met een andere vraag naar die verzameling voor het document van die _id.
In het geval van Handmatige referenties dit wil in feite zeggen dat er slechts een veld in uw document is met als inhoud de ObjectId uit een ander document. Dit verschilt alleen van de DBref als iets dat nooit . zal zijn worden verwerkt door een basisstuurprogramma-implementatie, laat u geheel aan u over hoe u verder gaat met het ophalen van dat andere document.
In het geval van:
> db.collection.findOne()
{
_id: <ObjectId>,
name: "This",
something: "Else",
ref: <AnotherObjectId>
}
De ref
veld in het document is niets meer dan een gewone ObjectId en doet niets bijzonders. Dit stelt u in staat om uw eigen vraag in te dienen om de Objectdetails te krijgen waarnaar dit verwijst:
> db.othercollection.findOne({ _id: <AnotherObjectId > })
{
_id: <ObjectId>
name: "That"
something: "I am a sub-document to This!"
}
Houd er rekening mee dat al deze processen aan de clientzijde plaatsvinden via de driver-API. Niets van dit ophalen van andere documenten gebeurt in ieder geval op de server.