gpt4 book ai didi

mongodb - mgo 查询为大型数据集返回 "EOF"

转载 作者:IT王子 更新时间:2023-10-29 02:27:57 27 4
gpt4 key购买 nike

我想执行一个从我的 MongoDB 服务器返回一些数据的查询,但是当数据量变大时,我从 c.Find().All() 查询中得到一个“EOF”错误。

基本上我有:

activeData := []DataEntry{}
activeDataQuery := bson.M{"data.active": true}
err := sigdb.Find(activeDataQuery).All(&activeData)

这对于包含大约 50,000 个项目的小型测试来说效果很好,但是当我尝试我的完整数据集(超过一百万个项目)时,它返回“EOF”,即使那里有数据要查询。

这可能是什么原因造成的?我在使用 Go 1.3 运行 Ubuntu 14.04 的笔记本电脑上同时运行 Go 程序和 MongoDB 服务器。

编辑:经过进一步试验,我还得到:来自同一查询的“write tcp 127.0.0.1:27017: broken pipe”。

最佳答案

All方法会将所有匹配的数据加载到内存中,这是一种非常糟糕的处理大数据集的方式。运气好的话,你会在方法完成之前遇到这样的超时,在最坏的情况下,机器会因内存不足而崩溃。

在任何类型的非平凡数据集上,使用普通迭代代替 IterNext方法。

关于mongodb - mgo 查询为大型数据集返回 "EOF",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28884793/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com