sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo hacer referencia a un documento incrustado en Mongoid?

Debido a que los mapas son su propia colección, deberá iterar sobre cada colección de mapas buscando la ubicación a la que hace referencia su reproductor.

No puede acceder a los documentos incrustados directamente. Tienes que entrar a través de la colección y avanzar hacia abajo.

Para evitar iterar todos los mapas, puede almacenar tanto la referencia de ubicación como la referencia de mapa en el documento de su reproductor. Esto le permite encadenar criterios que seleccionan su Mapa y luego la Ubicación dentro de él. Tienes que codificar un método en tu clase Player para manejar esto.

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

Por lo tanto, es similar a cómo te respondiste a ti mismo, excepto que aún puedes almacenar el ID_ubicación en el documento de tu jugador en lugar de usar los atributos coord.

Otra forma sería poner Mapas, Ubicaciones y Jugadores en sus propias colecciones en lugar de incrustar la Ubicación en su colección de Mapas. Entonces podría usar relaciones de referencia sin hacer nada complicado... sin embargo, en realidad solo está usando una base de datos jerárquica como si fuera una base de datos relacional en este punto...