2012-02-16 77 views
2

我檢出了an older question,這與我的嵌入式分頁情況有關。雖然嵌入式分頁與切片工作正常,總頁數解決方案仍然缺失,我不知道是否有可能獲得服務器端的評論的總大小。在mongodb中實現總頁數的嵌入式分頁

有沒有辦法在服務器上查詢或計算嵌入式數組的大小,而無需將整個文檔提取到我的應用程序並手動計算它?

我不介意對此進行2個查詢,對於分頁評論1,對於獲得評論總數1。如果我可以在一個查詢中做到這一點,那將是驚人的。

順便說一句,我使用java驅動程序和spring-data mongodb。

請分享您的想法。謝謝 !

回答

5

獲得嵌入文檔總數的最佳/最快方式是在每次更新/插入後創建一個附加字段並重新計算計數。 文件會是這樣

{ 
    _id: 1, 
    comments: [], 
    commentsCount: 5 
} 

然後,你可以簡單地包括commentsCount場做切片時:

//this query will include only 10 comments _id and comments count of root document 
db.articles.find({}, {comments:{$slice: [20, 10]}, _id:1, commentsCount: 1}) 

而且居然還有沒有其他的辦法來計算嵌入文檔的總數(我不是說關於m/r,因爲它對於實時請求來說很慢)

+0

你的回答就像是對我的爆頭。我一直在使用非規範化和計數的情況下,但我沒有想到這種情況。謝謝 ! – bertie 2012-02-16 15:54:43

+0

@AlbertKam:非規範化是nosql數據庫的最好朋友;) – 2012-02-16 15:56:33