MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment référencer un document embarqué dans Mongoid ?

Étant donné que les cartes sont leur propre collection, vous devez parcourir chaque collection de cartes à la recherche de l'emplacement auquel votre lecteur est référencé.

Vous ne pouvez pas accéder directement aux documents intégrés. Vous devez entrer dans la collection et descendre.

Pour éviter d'itérer toutes les cartes, vous pouvez stocker à la fois la référence d'emplacement ET la référence de carte dans votre document Player. Cela vous permet d'enchaîner des critères qui sélectionnent votre carte, puis l'emplacement qu'elle contient. Vous devez coder une méthode sur votre classe Player pour gérer cela.

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

Donc, similaire à la façon dont vous vous êtes répondu, sauf que vous pouvez toujours stocker le location_id dans votre document de lecteur au lieu d'utiliser les attributs coord.

Une autre façon serait de mettre les cartes, les emplacements et les joueurs dans leurs propres collections au lieu d'intégrer l'emplacement dans votre collection de cartes. Ensuite, vous pouvez utiliser des relations de référence sans rien faire d'extraordinaire... Cependant, vous n'utilisez qu'une base de données hiérarchique comme si c'était une base de données relationnelle à ce stade...