Я делаю игру. Часть игры состоит в том, чтобы собирать объекты. Вы получаете баллы за «разнообразие», поэтому каждый объект в категории имеет свойства. Если вы собрали объект с определенным свойством, множитель для этого свойства больше не применяется ни к одному из других объектов с этим свойством. Точки рассчитываются путем комбинирования всех значений unqiue для каждого собранного вами имущества, а затем умножения на коэффициент для этого свойства. Например:MongoDB Алгоритм для сбора информации об объекте
Points
Category: Toys
Base: 2
Shape: 7
Material: 10
Color: 5
Bouncy ball: Snow Globe:
category: sphere category: sphere
shape: round shape: round
material: rubber material: glass
color: swirls color: clear
Collected:
bases = my_objects.length * base = 2 * 2 = 4
shapes = array('round').length * 7
materials = array('rubber', 'glass') * 10
color = array('swirls', 'red') * 5
score = bases + shapes + materials + color = 4 + 7 + 20 + 10 = 41
Объекты хранятся в виде документов nosql (mongodb). Мой вопрос заключается в том, что лучший способ выбрать все остальные объекты из базы данных, в том порядке, в котором несохраненные объекты будут добавлять наибольшее количество баллов в счет пользователя.
оценка каждого документа зависит от того, кто зарегистрировался и что они собрали ранее. Хранение этого документа потребует от меня пересчета баллов за миллионы объектов каждый раз, когда пользователь собирает новый объект – chris