2014-07-15 25 views
0

我知道如何查詢集合。但是我有一個包含100,000個記錄的集合,我想每個頁面只顯示100個項目。然後,用戶可以選擇接下來的100條記錄,等等......node.js mongodb遊標循環客戶端請求

由於此請求來自用戶,因此如何在node.js上保持光標打開以便在客戶端請求它時循環接下來的100個項目?

什麼是標準做法?

謝謝!

回答

0

你所指的標準做法就像分頁。

您不需要始終保持光標一直打開。所有你需要確定的是你從你離開的同一個地方繼續。

客戶端將保留已經顯示的記錄數並在遊標的skip()函數內使用該數字。


例如:

  • 客戶端上設置有10個記錄。 record_count = 10
  • 客戶端請求更多記錄,並在請求中包含record_count
  • 服務器在skip參數的另一個查詢中使用提供的record_count
  • 服務器向客戶端返回另外10條記錄。
  • 客戶端更新record_count變量現在是20
  • 沖洗,重複...

請記住,你想要你的結果以某種方式進行排序,以便您的查詢將始終返回不同結果(接下來的10條記錄)。


我不是太熟悉蒙戈節點驅動程序,但在蒙戈外殼,您可以按如下執行查詢:

db.collection.find().sort({ "time": 1 }).skip(record_count).limit(10) 
+0

如果我做什麼複雜的查詢,比如說 - 關鍵字搜索。這會在每次用戶請求時執行復雜的查詢,這不是問題嗎? – user3658423

+0

如果這是一個複雜的查詢,您只能執行一次實際查詢並將結果保存到其他集合中。然後,您將使用我所描述的相同技術來查詢包含結果的集合。 – Lix