我是couchdb的新手,我查看了文檔和SO帖子,但由於某種原因,這個簡單的查詢仍然無法解決。按日期查詢Couchdb同時保持排序順序
SELECT TOP 10 * FROM x WHERE DATE BETWEEN startdate AND enddate ORDER BY score
UPDATE:它不能做。這是不幸的,因爲要獲得這種類型的數據,你必須從沙發上撤回數百萬條記錄(幾個 字段),然後自己進行篩選,排序或限制 以獲得期望的結果。我現在回到我的 使用_changes原始解決方案來捕獲和存儲其他地方我需要執行該查詢的數據。
這裏是我的更新視圖(感謝星):
emit([d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(), score], doc.name);
我需要做的是:
- 始終排序得分降序
- 可選的過濾器日期範圍(例如,僅當今)
- 限制x
更新:感謝Dominic我更接近 - 但仍然有 問題。
?startkey=[2017,1,13,{}]&endkey=[2017,1,10]&descending=true&limit=10&include_docs=true
這帶來了回來得分排序
但是兩個日期之間的文件,如果我想前10名不分日期的話,我只拿回按日期排序前10位(而不是得分)
太好了,謝謝Dominic我現在要試試這個了。 我實際上並沒有存儲文檔,而是創建了一個新的文檔子集(帶有8個道具)(即:{Name:doc.prop.name,...} - 使用include_docs =真正的(和視圖=發射([鍵],1)當文檔有大約50個屬性?我可以測量,但聽起來像你會知道你的頭頂上:-) – schmoopy
我也更新了我的問題後,發現了極限可以真正實現效果 - 但是你的解決方案可以滿足所有需求 - 非常感謝! – schmoopy
我說得太快了,如果我增加了限制,那麼由於左右排序,它不能正常工作,我更新了我的問題。第100次評論,對所有更新感到抱歉) – schmoopy