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

Hvordan henvises til et indlejret dokument i Mongoid?

Fordi Maps er deres egen samling, skal du gentage hver kortsamling, der søger efter den placering, som din spiller refererer til.

Du kan ikke få direkte adgang til indlejrede dokumenter. Du skal ind gennem samlingen og arbejde dig ned.

For at undgå at gentage alle kortene kan du gemme både placeringsreferencen OG kortreferencen i dit afspillerdokument. Dette giver dig mulighed for at sammenkæde kriterier, der vælger dit kort og derefter placeringen på det. Du skal kode en metode på din Player-klasse for at håndtere dette.

def location
  self.map.locations.find(self.location_id)
end

Så svarende til, hvordan du selv svarede, bortset fra at du stadig kunne gemme location_id'et i dit afspillerdokument i stedet for at bruge koordinationsattributterne.

En anden måde ville være at placere kort, placeringer og spillere i deres egne samlinger i stedet for at indlejre placeringen i din kortsamling. Så kunne du bruge referencerelationer uden at gøre noget fancy... men du virkelig bare ved at bruge en hierarkisk database kan lide, at det er en relationsdatabase på dette tidspunkt...



  1. phpMyAdmin svarende til MySQL for Redis?

  2. mongodb aggregat $lookup vs find og populate

  3. Forespørgsel efter lignende array i MongoDB

  4. Hvordan læser man data ind i Tensorflow?