使用golang从MongoDB批量获取记录

时间:2019-01-09 20:09:41

标签: mongodb go batch-processing mgo

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

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

y

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

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++;
    }
}

但是它没有按预期工作。

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

1 个答案:

答案 0 :(得分:1)

batchSize()指定每批响应中要返回的文档数。您仍然会得到所有结果。例如,如果返回的文档总数为100,并且您将批处理大小指定为20,则您将有1条find和4条getMore命令从客户端发送到mongod请求。

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