Stockage / travail avec des étiquettes dans MongoDB pour un système de gestion de documents

StackOverflow https://stackoverflow.com/questions/6810440

  •  25-10-2019
  •  | 
  •  

Question

Je travaille donc sur un projet pour animaux de compagnie où je stocker divers fichiers texte. J'ai installé mon application pour enregistrer les balises comme une chaîne dans l'une de mes collections afin, par exemple, serait:

tags: "Linux Apache WSGI"

les stocker et de les chercher très bien fonctionner, mais ma question est quand je veux faire quelque chose comme un nuage de tags, comptez toutes les différentes balises, ou faire un système de sélection dynamique basée sur les balises, quelle est la meilleure façon de briser -les travailler? Ou devrais-je les stocker d'une autre façon?

Logiquement je pouvais parcourir tous les enregistrements et obtenir toutes les balises, les briser en fonction de l'espace, puis mettre en cache le résultat en quelque sorte. Peut-être que la bonne réponse, mais je voulais demander à la sagesse de la communauté.

J'utilise pymongo pour interagir avec ma base de données.

Était-ce utile?

La solution

Ou devrais-je être de les stocker d'une autre façon?

La méthode standard pour stocker les étiquettes est de les stocker sous forme de tableau. Dans votre cas, la DB ressemblerait à quelque chose comme:

tags: ['linux', 'apached', 'wsgi']

... quelle est la meilleure façon de les briser travailler?

est ce que Map / Reduce est conçu pour. Efficacement « scanne tous les records ». La sortie d'une Map / Reduce est une autre collection que vous pouvez interroger.

Cependant, il y a aussi une autre façon de faire ceci et cela est de garder « compteurs » et les mettre à jour. Donc, lorsque vous enregistrez un nouveau document incrémenter également toutes les balises liées à ce document.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top