Хранение/работа с тегами в MongoDB для системы управления документами
Вопрос
Поэтому я работаю над Pet Project, где я храню различные текстовые файлы. Я настроил свое приложение, чтобы сохранить теги в качестве строки в одной из моих коллекций, поэтому примером был бы пример:
Теги: "Linux apache wsgi"
Хранить их и ищет их, работающие просто отлично, но мой вопрос возникает, когда я хочу сделать что -то вроде облака тегов, подсчитывать все различные теги или создать систему динамического выбора на основе тегов, какой лучший способ разбить их на работать с? Или я должен хранить их в другую сторону?
Логически я мог бы отсканировать каждую запись и получить все теги, сломать их на основе пространства, а затем как -то кэшировать результат. Может быть, это правильный ответ, но я хотел спросить мудрость сообщества.
Я использую Pimongo для взаимодействия с моей базой данных.
Решение
Или я должен хранить их в другую сторону?
Стандартный способ хранить теги - хранить их как массив. В вашем случае БД будет выглядеть как -то вроде:
tags: ['linux', 'apached', 'wsgi']
... Как лучше всего разбить их, чтобы работать?
Это то, что Уменьшение карты предназначен для. Это эффективно «сканирует каждую запись». Выход карты/уменьшения - это еще одна коллекция, которую вы можете запросить.
Тем не менее, есть и другой способ сделать это, и это сохранение «счетчиков» и обновить их. Поэтому, когда вы сохраняете новый документ, вы также увеличиваете все теги, связанные с этим документом.