2012-01-10 39 views
1

我正在做一個遊戲。遊戲的一部分是收集物體。您可以獲得「多樣性」的積分,因此類別中的每個對象都具有屬性。如果您已收集具有某個屬性的對象,則該屬性的乘數不再應用於具有該屬性的任何其他對象。這些點是通過組合所收集的每個財產的所有獨立價值,然後乘以該財產的係數來計算的。例如: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)。我的問題是,從數據庫中選擇所有剩餘對象的最佳方式是按照未收集對象爲用戶的分數添加最多點的順序。

回答

0

在進一步探討這個問題後,似乎我的目標是無關緊要的。只要收集到其他東西,哪個對象產生最多點的整個順序就會發生劇烈變化,因此排序並不重要。

0

店得分總在文檔中,然後就可以通過降序排序(使用如果需要的索引)

你不能「排序A + B + C」中尚未蒙戈使得有可能最好的

+0

每個文檔的得分取決於誰登錄以及他們以前收集了什麼內容。將它存儲在文檔中需要我在每次用戶收集新對象時重新計算數百萬個對象的分數 – chris 2012-01-10 17:07:44