2011-12-02 62 views
1

我有一個MongoDB的集合稱爲其認爲,像這樣的JSON對象問題:如何獲得使用MongoDB的連續行集?

{ 
    "_id"  : "49902cde5162504500b45c2c", 
    "question" : "Who are you?", 
    "category" : "Personal" 
} 

,我想選擇一些號碼,說1000,這些問題在一個時間。一旦我處理了這1000個條目,我想繼續選擇下一個1000條目,等等。

有沒有簡單的方法來做這種使用MongoDB的行動?我對這項技術很陌生。如果不是,有沒有人有一個不同的做法呢?如果這有所幫助,我正在使用Java驅動程序。

謝謝,
克里斯隱蔽

回答

3

另一種做法是:

  1. 設置最後處理的ID = 0

  2. 選擇從問題其中id> [最後處理的ID]爲了通過ID限制1000

  3. 處理這些行
  4. 設置最後處理的Id = [從當前1000個結果中處理的最後一個ID]
  5. 跳回步驟2

這會比選擇所有內容和跳過()結果集更加高效。

或者添加一個「處理」標誌的記錄,這樣就可以分辨哪些記錄需要處理,然後查詢,其中加工= 0

1

您應該能夠使用這個skip()(和limit()),但被警告,因爲它是一個昂貴的查詢。

因此,假設您的收藏被稱爲「問題」,是這樣的:

db.questions.find().limit(1000) 
db.questions.find().skip(1000).limit(1000) 

將返回第一個1000,然後第二個1000點的問題。

+0

大部分時間該解決方案可以完美勝任。但在處理過程中可以將文檔寫入集合。 – misaxi