Quelle est la meilleure façon de garder une trace de tags uniques pour une collection de documents de plusieurs millions d'articles? La façon normale de faire du marquage semble être l'indexation des multi-clés. Cependant, j'ai souvent besoin de toutes les clés uniques. Je n'ai pas non plus accès à la nouvelle commande "distincte" de mongodb, puisque mon driver, erlmongo, ne semble pas encore l'implémenter.MongoDB: Quelle est la meilleure façon d'obtenir une liste de tous les tags uniques?
Répondre
Même si votre pilote n'implémente pas distinct, vous pouvez l'implémenter vous-même. JavaScript (désolé, je ne sais pas Erlang, mais il devrait se traduire assez directement) peut dire:
result = db.$cmd.findOne({"distinct" : "collection_name", "key" : "tags"})
Alors, c'est: vous faites une findOne sur la collection « cmd $ » de quelque base de données » re en utilisant. Passez le nom de la collection et la clé que vous souhaitez exécuter distinctement.
Si vous avez besoin d'une commande pour laquelle votre pilote ne fournit pas d'aide, vous pouvez consulter http://www.mongodb.org/display/DOCS/List+of+Database+Commands pour une liste quelque peu complète de commandes de base de données.
Je sais que c'est une vieille question, mais j'ai eu le même problème et je n'ai pas pu trouver une vraie solution en PHP pour cela.
Alors je suis venu avec ceci:
http://snipplr.com/view/59334/list-of-keys-used-in-mongodb-collection/
Bienvenue sur Stack Overflow! Bien que cela puisse théoriquement répondre à la question, [il serait préférable] (http://meta.stackexchange.com/q/8259) d'inclure ici les parties essentielles de la réponse et de fournir le lien pour référence. – oers
John, vous trouverez peut-être utile d'utiliser Variety, un outil open source pour analyser le schéma d'une collection: https://github.com/jamescropcho/variety
Peut-être que vous pourriez courir Variété toutes les N heures en arrière-plan, et interroger la base de données variétéResults nouvellement créé pour récupérer une liste de clés uniques qui commencent avec une chaîne donnée (c'est à dire sont des descendants d'un parent spécifique). Faites-moi savoir si vous avez des questions ou si vous avez besoin de conseils supplémentaires.
Bonne chance!
Awwwwww, ouais. :) –