MongoDB游标和写操作

时间:2013-10-10 08:20:07

标签: mongodb cursor

我正在使用 MongoDB 来保存有关产品的数据。在写完初始大型数据集(24mio项目)后,我想更改集合中的所有项目。

因此我使用游标迭代整个集合。然后我想为集合中的每个项添加一个“行”或字段。对于大型数据集,这不起作用。只有180000项更新。在小范围内,它正在发挥作用。这是正常的行为吗?

MongoDB 在用光标遍历整个集合时不应该支持写入吗?

这样做的好习惯是什么?

2 个答案:

答案 0 :(得分:0)

对于较大的集合,您可能会遇到快照问题。当您向对象添加数据并保存它时,它将增长,迫使mongodb移动文档。然后你可能会发现该对象两次。

您可以在查询中使用$snapshot,也可以使用sort({"_id":1})等稳定订单。请注意,您不能同时使用它们。

还要确保至少使用已确认的写入问题。

答案 1 :(得分:0)

当我们遇到类似问题时,我们以100k(带有一些测试)块的形式获取数据。这是一个快速而简单的解决方案。