mongodb - 使用golang从MongoDB批量获取记录

标签 mongodb go batch-processing mgo

如何使用 golang 从 mongo 数据库中批量获取记录?我知道 mongoDB 本身有一个叫做 cursor.batchSize() 的东西,但我试图找到一个使用 golang 驱动程序的例子。据我所知,golang 库 mgo 有一个名为 Batch 的函数,但我想弄清楚如何使用它。

理想情况下,我正在寻找这样的东西:

const cursor = useDb.collection(mycollection).find().batchSize(10000);
for (let doc = await cursor.next(); doc != null; doc = await cursor.next()) {
    if (doc._id % divisor === 0) {
        counter++;
    }
}

到目前为止我有这样的事情:

err := c.Find(nil).Batch(1).All(&items)

但它并没有像预期的那样工作。

链接: https://docs.mongodb.com/manual/reference/method/cursor.batchSize/ https://godoc.org/github.com/globalsign/mgo#Query.Batch

最佳答案

batchSize() 指定每批响应中要返回的文档数。你仍然会得到所有的结果。例如,如果返回的文档总数为 100,而您将批量大小指定为 20,则客户端将向 mongod 完成请求。

可以用来验证的一个小技巧。使用 mongo shell 中的 db.setProfilingLevel(0, 0) 将所有内容记录在日志文件中。执行您的测试应用程序,您将看到日志中记录了 findgetMore

关于mongodb - 使用golang从MongoDB批量获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54117568/

相关文章:

mysql - App Engine 中的 GoLang 动态 SQL 查询

c++ - Go 的多值返回语句是异常的替代方案吗?

go - 管理后台操作(创建/杀死)

spring - Spring Batch javaConfig : Conditional Flow

php - 在单个 php 脚本上运行多个 php 脚本

python - 名称错误 : name 'TigerXtrm' is not defined

mongodb $in 限制

具有相同文档中的字段的 Mongodb 查询

java - MongoDB在线程 "main"java.lang.NoClassDefFoundError : org/bson/conversions/Bson中出现java异常

java - 在 Tomcat 中运行后台 Java 程序