Dokumentationen er ret tydelig i den manualsektion, du henviser til, som er afsnittet om Databasereferencer . Den vigtigste del for at forstå dette er indeholdt i åbningserklæringen på siden:
De yderligere oplysninger dækker emnet om, hvordan du kan vælge at håndtere adgang til data, som du gemmer i en anden samling.
Der er DBRef specifikation, som uden at gå for meget mere i detaljer, kan implementeres i nogle drivere på en måde, at når disse findes i dine dokumenter, vil de automatisk hente (udvide) det refererede dokument til det aktuelle dokument. Dette ville blive implementeret "bag kulisserne" med en anden forespørgsel til den samling for dokumentet for det pågældende _id.
I tilfælde af Manuelle referencer dette er dybest set at sige, at der kun er et felt i dit dokument, der som indhold har ObjectId fra et andet dokument. Dette adskiller sig kun fra DBRef som noget, der aldrig vil behandles af en basisdriverimplementering, er det op til dig, hvordan du håndterer enhver yderligere hentning af det andet dokument.
I tilfælde af:
> db.collection.findOne()
{
_id: <ObjectId>,
name: "This",
something: "Else",
ref: <AnotherObjectId>
}
ref
felt i dokumentet er intet andet end et almindeligt ObjectId og gør ikke noget særligt. Hvad dette giver dig mulighed for er at indsende din egen forespørgsel for at få de objektdetaljer, som dette refererer til:
> db.othercollection.findOne({ _id: <AnotherObjectId > })
{
_id: <ObjectId>
name: "That"
something: "I am a sub-document to This!"
}
Husk, at alt dette foregår på klientsiden via driver-API'en. Intet af denne hentning af andre dokumenter sker på serveren under alle omstændigheder.