Доброго дня.
Имеется необычная на мой субъективный взгляд задача. Необходимо отсортировать товары по порядку предпочтения, больше - значит лучше.
Всего имеется 1 общий сортировочный порядок (По цене, По новизне) и еще 4 которые могут быть расположены в разном пользовательском порядке т.е пользователь может изменить порядок этих пунктов:
- Size
- Color
- Clarity
- Quality
Обычно запрос выглядит так:
db.getCollection("products")
.find({
status: 'available',
shape: { '$in': [...] },
price: { '$gte': 0, '$lte': 100000 },
size: { '$gte': 0, '$lte': 5 },
color: { '$gte': 0, '$lte': 22 },
clarity: { '$gte': 0, '$lte': 11 },
quality: { '$gte': 0, '$lte': 5 },
})
.sort({ price: 1, size: -1, color: -1, clarity: -1, quality: -1 })
Проблема в том, что товаров достаточно много и они часто добавляются, а вариантов сортировки 24+ и заводить под каждый из них индекс мне не кажется здравой идеей.