使用golang从MongoDB批量获取记录

使用golang从MongoDB批量获取记录,mongodb,go,batch-processing,mgo,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.n

如何使用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)
但它没有像预期的那样工作

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


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

谢谢您的解释。我试图弄清楚如何不将数百万条记录一次性加载到应用程序中进行批处理。我想我可以做一些有限度的事情。谢谢