我正在尋找這種類型的SQL查詢的等價物。在MongoDB中查找最頻繁出現的值的最佳方式是什麼?
SELECT field, count(*) as counter from table order by counter DESC
什麼是實現這一目標的最佳方式是什麼?
謝謝
我正在尋找這種類型的SQL查詢的等價物。在MongoDB中查找最頻繁出現的值的最佳方式是什麼?
SELECT field, count(*) as counter from table order by counter DESC
什麼是實現這一目標的最佳方式是什麼?
謝謝
使用Map-Reduce。通過發送密鑰和值1來映射每個文檔,然後使用簡單的縮減操作來聚合它們。請參閱http://www.mongodb.org/display/DOCS/MapReduce
我會通過分別跟蹤各自的計數來處理聚合查詢,即在他們自己的集合中。這樣,您可以簡單地查詢「最常出現」的集合。下行:當數據發生變化時,您需要執行另一次寫操作。
當然,您也可以使用Map/Reduce不時更新該集合。這取決於信息的準確性和變化的頻率。
但是,請確保不要經常調用Map/Reduce操作:它並不意味着以交互方式使用(即不是在每個頁面視圖中),而很少在更新計數的離線過程中使用每小時左右。因此,如果您的計數變化非常快,請使用計數器集合。
我只需要運行一次。我不關心表現,我只想要一個答案。 – Zach
那麼你爲什麼不簡單地獲取不同的值並查詢每個值呢?這不是非常快,但很容易。 – mnemosyn
也很好奇最好的方式來做到這一點。 – Zach