我是Haskell的初學者,我傾向於通過干預來學習。Haskell mongoDB驅動程序(1.3.1)光標迭代示例
有人能給我一個如何在nextBatch或nextN上使用遊標的例子嗎? http://hackage.haskell.org/packages/archive/mongoDB/1.3.1/doc/html/Database-MongoDB-Query.html#g:12
嘗試過這樣的事情(我試着寫一個自定義的迭代函數,f是我想要的所有文件映射到一個功)
let cursor = Mdb.find (Mdb.select selector collection)
-- consume :: IO()
consume = do
r <- runAction db $ Mdb.nextBatch =<< cursor
if length (fromRight r) == 0
then return()
else do
mapM_ f (fromRight r)
consume
consume
現在這個運行在一個無限循環,永遠返回相同的一組文檔。我猜遊標永遠不會被修改?遊標類型本身有一個MVar作爲其中的一個元素,首先我認爲當我執行nextBatch時會更新,但這種情況從未發生過。
也許我應該重寫遞歸的方式,它停留在Action monad(請參閱mongo驅動程序),而不是IO?我被卡住了。
謝謝。我沒有嘗試這個解決方案,但你的解釋聽起來很合理。 –