#mongodb #mongoose #mongodb-query #mongoid
#mongodb #mongoose #mongodb-запрос #mongoid
Вопрос:
У меня есть три коллекции.
Товары
{
_id
}
пользователь
{
_id
}
item_user_info
{
_id
item_id (FK item)
user_id (FK user)
}
Мне нужно отсортировать документы из коллекции элементов по приоритету, где приоритет равен:
— Если комбинация item_id и переданного user_id существует в item_user_info, то приоритет = 1, иначе 0.
Вопрос: Каким будет запрос?
Я также могу изменить схему, если вы предложите, и если это ускорит выполнение запроса.
Примечание: Количество пользователей и элементов будет увеличиваться своевременно в миллионах.
Ответ №1:
Добавьте поле с именем priority
, заполните его при обратном вызове, установив для него значение 1 или 0 на основе описанных вами правил. При извлечении данных сортируйте по этому полю. Вы также можете рассмотреть возможность добавления к ней индекса.
Тем не менее, выбранная вами схема не очень подходит для MongoDB. Вероятно, вы сможете более эффективно запрашивать свои данные, переосмыслив, как вы управляете ассоциациями.
Комментарии:
1. Спасибо за ваш ценный ответ. Не могли бы вы, пожалуйста, предложить схему отбивания для этих трех коллекций.
2. На этот вопрос непросто ответить, и на него невозможно ответить, не зная большого количества информации о вашем приложении и в целом о том, чего оно пытается достичь. Вы можете начать с чтения этого поста: mongodb.com/blog/post / …