Дано:
База данных объектов, каждый из которых имеет взвешивание по умолчанию для порядка поиска (возможно, универсальный рейтинг популярности).
Поскольку каждый пользователь использует эти объекты, личное взвешивание пользователя дляпорядок поиска сохраняется для каждого элемента (с использованием любого алгоритма, такого как частота использования и т. д.).
В SQL это довольно легко сделать, объединяя объекты и таблицы user_objects и делая что-то вроде
select ... coalesce(user_objects.personal_weighting, objects.default_weighting)
as sort_key order_by sort_key
Другими словами, пользователь может искать всю базу данных объектов (например, песни).Если есть объект, с которым пользователь никогда ранее не взаимодействовал (песня, которую он никогда не слушал), тогда весовое значение порядка поиска для этого объекта основывается на значении по умолчанию, сохраненном для каждого объекта.Если пользователь взаимодействовал с объектом, тогда весовые коэффициенты порядка поиска этого объекта основаны на весовых коэффициентах конкретного пользователя, переопределяя значение по умолчанию.
Есть ли эффективный способ моделирования этого в MongoDB?Было бы довольно легко и эффективно использовать map / lower в CouchDB из-за индексов, хранимых для карты / уменьшенных видов, но я не понял, как это сделать в MongoDB.
Есть идеи?