Как можно выполнить сортировку в MongoDB по данным другой коллекции

#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 / …