2012-01-03 72 views
1

如何使用CouchDB進行單個查詢計數?如何使用CouchDB進行單個查詢計數?

我可以使用map-reduce構建獨立視圖[{key: post_id, value: comments_count}]但我不得不打兩次數據庫 - 一個查詢獲得帖子,另一個獲取comments_count。

還有另一種方法(Rails這樣做) - 在應用程序服務器上手動計數註釋,並將其保存在帖子的comment_count屬性中。但是,我們需要在每次添加或刪除新評論時更新整個發佈文檔。 在我看來,CouchDB沒有這樣調整,與RDBMS不同的是,當我們只能更新CouchDB中的comment_count屬性時,我們不得不更新整個文檔。

也許還有另一種方法呢?

謝謝。

回答

0

視圖的返回json包含文檔計數爲'total_rows',所以你不需要自己計算任何東西,只是發出你想要計算的所有文檔。

{"total_rows":3,"offset":0,"rows":[ 
    {"id":...,"key":...,value:doc1}, 
    {"id":...,"key":...,value:doc2}, 
    {"id":...,"key":...,value:doc3}] 
} 
+0

但我不需要獲取所有的評論,這是效率低下。例如 - 我想顯示包含評論數量的帖子列表。如果頁面上顯示30個帖子 - 採用這種方法,我還必須獲取所有30個帖子的所有評論。 – 2012-03-29 08:26:41

+0

我認爲你要麼停留在2個電話或更多的帶寬。如果你從瀏覽器異步拋出兩個調用,那麼額外連接的開銷會很小,但大多數延遲會重疊。 – Jim 2012-03-30 11:40:07

+0

這是不好的,因爲在這種情況下,沒有javascript的客戶將無法看到評論數量 – matejcik 2012-06-22 00:25:44