2010-01-26 7 views
27

Je n'arrive pas à comprendre comment filtrer les documents incorporés dans MongoDB et je commence à penser que je devrais utiliser une association relationnelle, mais cela ne va pas dans le contexte du magasin de documents. Coller avec un système de commentaire/blog typique, j'ai une collection de blogs, et chaque blog a beaucoup comments. Les commentaires sont stockés en tant que documents incorporés dans le document du blog.Filtrage de documents incorporés dans MongoDB

Il est très simple de filtrer ma collection blogs, mais pour filtrer mon comments intégré dans chaque blog, je suis d'avoir à les charger dans la mémoire (récupérer tous dans un tableau Ruby) et boucle à travers chaque commentaire, renvoyer ceux qui correspondent à un critère spécifique.

Mes efforts pour filtrer les documents incorporés à l'aide de la notation par points échouent et ramènent tous les sous-documents.

Existe-t-il un meilleur moyen de faire en sorte que MongoDB les filtre pour moi, ou devrais-je me résigner à des associations relationnelles? (Retirer tous les documents incorporés et filtrer manuellement va être trop intensif à long terme)

Répondre

22

Il n'existe actuellement aucun moyen de filtrer les documents intégrés de la façon que vous décrivez. L'utilisation de la notation par points vous permet de faire correspondre un document incorporé, mais le document entier, parent et tout, sera toujours retourné. Il est également possible de sélectionner les champs qui seront retournés, mais cela ne vous aide pas vraiment non plus.

Nous avons un cas de «collections virtuelles», qui mettrait en œuvre la fonctionnalité souhaitée; ne hésitez pas à voter là-dessus:

http://jira.mongodb.org/browse/SERVER-142

En attendant, vous devriez probablement traiter des commentaires comme leur propre collection. En général, si vous devez travailler seul sur un ensemble de données donné, créez-en une collection. Si c'est mieux conçu dans le cadre d'un autre ensemble, il est préférable d'intégrer.

+0

Merci kb - sont allés avec la collection de son propre chef, semble bien fonctionner jusqu'à présent; juste besoin de stress tester un peu. – kez

+0

Cool. Cela devrait encore être efficace. –

+13

Est-ce que les «collections virtuelles» ne sont pas vraiment trop exigeantes pour répondre à cette exigence? Je suis juste curieux - est-ce que la capacité de retourner seulement un document incorporé spécifique n'est pas développé parce que ce n'est pas nécessaire ou parce que c'est compliqué? – idophir

Questions connexes