我正在制作游戏。游戏的一部分是收集物品。您可以获得“多样性”的分数,因此类别中的每个对象都具有属性。如果已收集具有特定属性的对象,则该属性的乘数不再应用于具有该属性的任何其他对象。通过组合您收集的每个属性的所有unqiue值,然后乘以该属性的系数来计算这些点。例如:
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)。我的问题是,从数据库中选择所有剩余对象的最佳方法是,未收集的对象将为用户的分数添加最多的点。
答案 0 :(得分:0)
将得分总计存储在文档中,然后您可以按降序排序(如果需要,使用索引)
你不能在mongo中“按+ b + c排序”,所以这可能是最好的
答案 1 :(得分:0)
在进一步探索问题后,我的目标似乎无关紧要。一旦收集了其他东西,哪个对象产生最多点的整个顺序将发生巨大变化,因此首先排序没有意义。