Как оптимизировать составные индексы для сложной сортировки с разным порядком?

Доброго дня.
Имеется необычная на мой субъективный взгляд задача. Необходимо отсортировать товары по порядку предпочтения, больше - значит лучше.

Всего имеется 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+ и заводить под каждый из них индекс мне не кажется здравой идеей.
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 1
onyxmaster
@onyxmaster
Программист, ненастоящий сисадмин
Сколько продуктов в базе? Меньше 100000? Загружать в память и сортировать не в БД?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы