sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur refererar man till ett inbäddat dokument i Mongoid?

Eftersom kartor är deras egen samling, måste du upprepa varje kartsamling som söker efter den plats som din spelare refererar till.

Du kan inte komma åt inbäddade dokument direkt. Du måste gå in genom samlingen och arbeta dig ner.

För att undvika att upprepa alla kartor kan du lagra både platsreferensen OCH kartreferensen i ditt spelardokument. Detta låter dig kedja kriterier som väljer din karta och sedan platsen inom den. Du måste koda en metod på din Player-klass för att hantera detta.

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

Så, liknande hur du svarade själv, förutom att du fortfarande kunde lagra location_id i ditt spelardokument istället för att använda coord-attributen.

Ett annat sätt skulle vara att placera kartor, platser och spelare i sina egna samlingar istället för att bädda in platsen i din kartsamling. Då kan du använda referensrelationer utan att göra något fancy... men du använder egentligen bara en hierarkisk databas som att det är en relationsdatabas vid det här laget...



  1. MongoDB för kommersiellt bruk

  2. Introduktion till Redis Data Structures:Hashes

  3. Avinstallera mongoDB från ubuntu

  4. bson.D vs bson.M för sökfrågor