sql >> Database >  >> NoSQL >> MongoDB

Hoe te verwijzen naar een ingesloten document in Mongoid?

Omdat kaarten hun eigen verzameling zijn, moet u elke kaartverzameling herhalen om te zoeken naar de locatie waarnaar uw speler verwijst.

U hebt niet rechtstreeks toegang tot ingesloten documenten. Je moet door de collectie gaan en naar beneden werken.

Om te voorkomen dat alle kaarten worden herhaald, kunt u zowel de locatiereferentie ALS de kaartreferentie in uw Player-document opslaan. Hiermee kunt u criteria koppelen die uw kaart selecteren en vervolgens de locatie erin. Je moet een methode coderen in je Player-klasse om dit te verwerken.

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

Dus vergelijkbaar met hoe je jezelf antwoordde, behalve dat je de location_id nog steeds in je spelerdocument kon opslaan in plaats van de coördinaatattributen te gebruiken.

Een andere manier is om kaarten, locaties en spelers in hun eigen verzamelingen te plaatsen in plaats van de locatie in uw kaartenverzameling op te nemen. Dan zou je referentierelaties kunnen gebruiken zonder iets speciaals te doen... maar je gebruikt eigenlijk gewoon een hiërarchische database alsof het een relationele database is op dit punt...



  1. hoe indexeer je een gebruikersnaam in mongo met hoofdletterongevoelig?

  2. Redis-sleutelontwerp voor realtime voorraadtoepassing

  3. mongodb/mongoose findMany - vind alle documenten met ID's in array

  4. Wat moet ik gebruiken? Socket.io-kamers of Redis pub-sub?