2013-09-24 31 views
1

我需要一個調度程序作業,它將每5分鐘執行一次,並處理mongodb集合中接下來的100條記錄。它應該從首先插入的文檔開始。所以,在第一次運行中,我可以按升序對數據進行排序並獲得前100個文檔。但對於連續運行,我如何檢索下一個100個記錄給出最後處理的文檔的對象ID? (我不知道如何在這裏使用對象ID,因爲它是一個具有不同參數的生成字符串...我沒有定義任何其他ID)檢索mongo db中的下一個N記錄

如果這不是一個檢索記錄的好方法從mongodb獲取大數據集,請提供更好的方法。

每個文檔看起來象下面這樣:

{ "_id" : { "$oid" : "51ff17c8e4b02969f18e72bb"} , "source_of_info" : "somesource" , 
"entityinfo" : [ { "user" : "Alfredo Vela Zancada" , "social_network_entity_id" : 
364221775325822977 , "text" : "blah blah blah" , "created_at" : { "$date" : "2013-08- 
05T03:10:12.000Z"}}] , "relatedURLs" : [ { "url" : "http://t.co/swqP3FYQt5" 
,"expanded_url" : "http://ow.ly/nCkIS"}]} 

感謝。

+0

你在排序什麼?你的模式是什麼樣的?是否定期添加新文檔?這會甩掉你的分頁。 – WiredPrairie

+0

從另一個調度程序中,將定期添加文檔。所以我想處理最古老的文件,然後我不需要擔心新添加的文件。因爲我將在每次運行中處理最老的下100個文件。我計劃通過一個社交網絡ID進行排序,該網站的ID總是大於存在新增文檔的文檔。但它沒有模式,因此無法使用它來獲取數據。這裏沒有分頁的東西,我只需要處理所有的記錄。 – popcoder

+0

這個問題可以從暫停狀態取出,現在我猜... – popcoder

回答

3

如果你跟蹤哪個迭代你在,你可以使用類似:

db.users.find()限制(100).skip(1200)

另一種解決方案可能是爲每個條目添加一個「已處理」標誌。默認爲false。然後當你得到下一個100處理爲false的時候,執行findAndModify,並修改它們到現在爲止。

相關問題