sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB - manuelle referencer eksempel

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.




  1. Sådan laver du en kompleks forespørgsel MongoDB med Powershell

  2. Sådan sorteres et array i en samling

  3. Tømme/slette et sæt i Redis?

  4. mongodb:hvordan kan jeg se udførelsestiden for den samlede kommando?