我正在使用 MongoDB 来保存有关产品的数据。在写完初始大型数据集(24mio项目)后,我想更改集合中的所有项目。
因此我使用游标迭代整个集合。然后我想为集合中的每个项添加一个“行”或字段。对于大型数据集,这不起作用。只有180000项更新。在小范围内,它正在发挥作用。这是正常的行为吗?
MongoDB 在用光标遍历整个集合时不应该支持写入吗?
这样做的好习惯是什么?
答案 0 :(得分:0)
对于较大的集合,您可能会遇到快照问题。当您向对象添加数据并保存它时,它将增长,迫使mongodb移动文档。然后你可能会发现该对象两次。
您可以在查询中使用$snapshot
,也可以使用sort({"_id":1})
等稳定订单。请注意,您不能同时使用它们。
还要确保至少使用已确认的写入问题。
答案 1 :(得分:0)
当我们遇到类似问题时,我们以100k(带有一些测试)块的形式获取数据。这是一个快速而简单的解决方案。