2013-07-29 10 views
0

Je suis actuellement aux prises avec une tâche qui pourrait être facilement résolue dans une base de données relationnelle avec un simple JOIN.Recherche par champ dans un document référencé

J'ai une collection user_relations qui stocke les relations entre les utilisateurs dans le système et stocke essentiellement les références aux documents de la collection users en tant que simple _id. Maintenant, nous avons besoin d'un utilisateur pour pouvoir rechercher parmi les utilisateurs qui lui sont liés. Comment accomplissez-vous cela en mongo (avec une performance en tête, compte tenu du fait que l'utilisateur peut avoir un très grand nombre d'utilisateurs liés - amis/followers/etc)?

Répondre

2

Vous ne pouvez pas joindre des collections ensemble dans mongodb lui-même. Au lieu de cela, vous devez soit structurer votre conception de base de données de sorte que, par exemple, user_relations soit un attribut de users. Ou- effectuez la jointure efficacement dans l'application client une fois que vous avez les clés/_ids des utilisateurs que vous voulez récupérer. Parce que vous ne pouvez pas effectuer ces jointures sur le serveur, cela vous oblige vraiment à considérer exactement les informations que vous souhaitez renvoyer.

Vous pouvez facilement transmettre un tableau de _ids utilisateur que vous souhaitez renvoyer et utiliser l'opérateur $in pour renvoyer un ensemble de documents utilisateur.

Espérons que ça aide.

Questions connexes