Almacenar/trabajar con etiquetas en MongoDB para un sistema de gestión de documentos

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

  •  25-10-2019
  •  | 
  •  

Pregunta

Así que estoy trabajando en un proyecto de mascotas donde estoy almacenando varios archivos de texto. He configurado mi aplicación para guardar las etiquetas como una cadena en una de mis colecciones para que un ejemplo sea:

Etiquetas: "Linux Apache WSGI"

Almacenarlos y buscarlos funcionan bien, pero mi pregunta viene cuando quiero hacer algo como una nube de etiquetas, contar todas las etiquetas o hacer un sistema de selección dinámica basado en etiquetas, cuál es la mejor manera de romperlas. ¿trabajar con? ¿O debería almacenarlos de otra manera?

Lógicamente, podría escanear cada registro y obtener todas las etiquetas, romperlas en función del espacio, luego en caché el resultado de alguna manera. Tal vez esa sea la respuesta correcta, pero quería preguntarle a la sabiduría de la comunidad.

Estoy usando Pymongo para interactuar con mi base de datos.

¿Fue útil?

Solución

¿O debería almacenarlos de otra manera?

La forma estándar de almacenar etiquetas es almacenarlas como una matriz. En su caso, el DB se vería algo así como:

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

... ¿Cuál es la mejor manera de romperlos para trabajar?

Esto es lo que Mapa reducido está diseñado para. Esto efectivamente "escanea cada registro". La salida de un mapa/reducción es otra colección que puede consultar.

Sin embargo, también hay otra forma de hacer esto y es mantener "contadores" y actualizarlos. Entonces, cuando guarda un nuevo documento, también incrementa todas las etiquetas relacionadas con ese documento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top