マップは独自のコレクションであるため、プレーヤーが参照されている場所を検索するすべてのマップコレクションを反復処理する必要があります。
埋め込まれたドキュメントに直接アクセスすることはできません。コレクションを入力して、下に向かって作業する必要があります。
すべてのマップの反復を回避するために、ロケーション参照とマップ参照の両方をプレーヤードキュメントに保存できます。これにより、マップを選択し、次にマップ内の場所を選択する基準を連鎖させることができます。これを処理するには、Playerクラスにメソッドをコーディングする必要があります。
def location
self.map.locations.find(self.location_id)
end
したがって、coord属性を使用する代わりに、location_idをプレーヤードキュメントに保存できることを除いて、自分で答えた方法と同様です。
もう1つの方法は、マップコレクションにロケーションを埋め込むのではなく、マップ、ロケーション、およびプレーヤーを独自のコレクションに配置することです。そうすれば、特別なことを何もせずに参照関係を使用できます...しかし、階層型データベースを実際に使用するだけで、この時点ではリレーショナルデータベースであることが好きです...