我正在做一個遊戲。遊戲的一部分是收集物體。您可以獲得「多樣性」的積分,因此類別中的每個對象都具有屬性。如果您已收集具有某個屬性的對象,則該屬性的乘數不再應用於具有該屬性的任何其他對象。這些點是通過組合所收集的每個財產的所有獨立價值,然後乘以該財產的係數來計算的。例如: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 2012-01-10 17:07:44