如何使用Casbah迭代GridFS文件?

时间:2015-05-27 12:40:23

标签: mongodb scala casbah

我使用GridFs来保存数百万个文件。 获取所有文件的列表时,大的结果集会导致Mongo失败。使用python时,我通过使用find()的空过滤器来处理这种情况:

client = MongoClient("192.168.0.13")
db = client.test
fs = gridfs.GridFS(db)
for f in fs.find():
    #..relevant python code

这种方法有效,因为我从.find()

获取了一个游标

对于Scala和Casbah,我找不到这样做的方法。无论我做什么,Mongo都会尝试对结果集执行一些操作,超出分配给它正在执行的任何特定操作的内存限制。 我的scala测试代码是:

val mongoClient = MongoClient("192.168.0.13")
val db = mongoClient("test")

val gridfs = GridFS(db)
for(f <- gridfs) println(f.filename)

运行此代码会导致:

线程“main”中的异常com.mongodb.MongoException:运行错误:溢出排序阶段缓冲数据使用33554552字节超出内部限制33554432字节

我无法设法从Casbah获取GridFs访问的游标。我该怎么做?

0 个答案:

没有答案