Poiché le mappe sono una raccolta a sé stante, dovresti scorrere ogni raccolta di mappe cercando all'interno della posizione a cui fa riferimento il tuo giocatore.
Non puoi accedere direttamente ai documenti incorporati. Devi entrare attraverso la collezione e scendere.
Per evitare di ripetere tutte le mappe, puoi memorizzare sia il riferimento alla posizione che il riferimento alla mappa nel documento del giocatore. Ciò ti consente di concatenare i criteri che selezionano la tua mappa e quindi la posizione al suo interno. Devi codificare un metodo sulla tua classe Player per gestirlo.
def location
self.map.locations.find(self.location_id)
end
Quindi, in modo simile a come ti sei risposto a te stesso, tranne per il fatto che potresti ancora memorizzare location_id nel documento del tuo lettore invece di usare gli attributi di coord.
Un altro modo sarebbe quello di inserire mappe, posizioni e giocatori nelle proprie raccolte invece di incorporare la posizione nella raccolta di mappe. Quindi potresti usare le relazioni di riferimento senza fare nulla di speciale... tuttavia a questo punto stai semplicemente usando un database gerarchico come se fosse un database relazionale...