sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB - exempel på manuella referenser

Dokumentationen är ganska tydlig i manualavsnittet du hänvisar till, vilket är avsnittet om Databasreferenser . Den viktigaste delen för att förstå detta finns i det inledande uttalandet på sidan:

Den ytterligare informationen täcker ämnet hur du kan väljer att ta itu med åtkomst till data som du lagrar i en annan samling.

Det finns DBRef specifikation som utan att gå in för mycket mer i detalj, kan implementeras i vissa drivrutiner som ett sätt att när dessa hittas i dina dokument kommer de automatiskt att hämta (expandera) det refererade dokumentet till det aktuella dokumentet. Detta skulle implementeras "bakom kulisserna" med en annan fråga till den samlingen för dokumentet för det _id.

När det gäller Manuella referenser detta betyder i princip att det bara finns ett fält i ditt dokument som har ObjectId som innehåll. från ett annat dokument. Detta skiljer sig bara från DBRef som något som kommer aldrig bearbetas av en basdrivrutinsimplementering är det helt upp till dig hur du hanterar ytterligare hämtning av det andra dokumentet.

I fallet med:

> db.collection.findOne()

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

ref fältet i dokumentet är inget annat än ett vanligt ObjectId och gör inget speciellt. Vad detta låter dig göra är att skicka in din egen förfrågan för att få objektdetaljerna som detta refererar till:

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

Tänk på att allt detta bearbetas på klientsidan via drivrutins-API. Inget av detta hämtning av andra dokument sker på servern i alla fall.




  1. Mongo DB Design, inbäddning vs relationer

  2. MongoDB - ska mitt användardokument innehålla en lista över projekt-ID?

  3. Grundläggande överväganden för att ta en MongoDB-säkerhetskopia

  4. MongoDB:Hur representerar man ett schemadiagram i en avhandling?