enlaces tienen una o más etiquetas, por lo que en principio puede parecer natural para incrustar los tags:¿Cómo implementaría estas consultas de manera eficiente en MongoDB?
link = { title: 'How would you implement these queries efficiently in MongoDB?'
url: 'http://stackoverflow.com/questions/3720972'
tags: ['ruby', 'mongodb', 'database-schema', 'database-design', 'nosql']}
cómo se aplicaría estas consultas de manera eficiente?
- Enlaces que contienen una o más etiquetas dadas (para buscar vínculos con etiquetas dados)
- obtener una lista de todas las etiquetas sin repetición (para la búsqueda de caja de autocompletar)
- Recibe las etiquetas más populares (para mostrar los 10 mejores etiquetas o una nube de etiquetas)
la idea de representar el enlace que arriba se basa en la MongoNY presentation, deslice 38.
Con el fin de agregar un campo de popularidad para una etiqueta, tendría que ser añadido o se mueve en una recogida selectiva, la etiqueta correcta? – randomguy
no es necesario, puede guardarlo en la misma colección y simplemente usar un dbref para señalar la etiqueta. una colección diferente simplificará la administración de sus datos (que es lo que recomiendo). – Asaf
En la colección de etiquetas, sugiero poner el nombre de la etiqueta en el campo _id en lugar de usar un campo de etiqueta separado. Además, si no le importa hacer una actualización por etiqueta en lugar de usar $ in, puede hacer que la consulta sea solo {_id: "tag_name"} y use la función de inserción para crear nuevas entradas de etiqueta. – mstearn