1
剛剛開始玩MongoDB。使用ruby不止一次地遍歷Mongo遊標
irb(main):037:0> @db.insert({"color" => "Blue"})
=> BSON::ObjectId('4f7aaf3a1d41c81634000002')
現在我嘗試使用find方法,使用find_one後:
irb(main):039:0> @results = @db.find({"color" => "Blue"})
=> <Mongo::Cursor:0x4340c48 namespace='tutorial.users' @selector={"color"=>"Blue"} @cursor_id=>
現在我嘗試遍歷結果:
irb(main):040:0> @results.each do |aa|
irb(main):041:1* puts aa["color"]
irb(main):042:1> end
Blue
=> nil
當我再次運行它,沒有出現
irb(main):043:0> @results.each do |aa|
irb(main):044:1* puts aa["color"]
irb(main):045:1> end
=> nil
Is it possible to iterate a mongo cursor twice?
上面的帖子說,我必須使用倒帶!方法在ruby類中。
讓我們來看看:
irb(main):046:0> @results.rewind!
=> true
irb(main):047:0> @results.each do |aa|
irb(main):048:1* puts aa["color"]
irb(main):049:1> end
Blue
=> nil
爲什麼光標只有一個運行良好?
如果我使用ruby driver直接創建rails應用程序,並嘗試分頁,第二個人點擊後退按鈕,沒有任何工作。
還有其他的選擇,但它看起來像一個黑客。
我讀了10分鐘的限制,但這似乎只適用於一個用途?
這裏發生了什麼,爲什麼我不能再次迭代它,至少在10分鐘的服務器限制下?
我明白了。我正在閱讀文檔和api文檔以最好地理解整個圖片。現在,我必須手動添加限制並跳過語句到我的遊標對象? 某處我讀到「下一個」可能有助於嘗試分頁。 此外,我必須使用像MongoMapper/Mongoid來創建一個Rails應用程序。我只是想看看我能夠使用簡單的Ruby驅動程序,因爲它看起來更「簡單」。 – BriteLite 2012-04-03 17:34:57