虽然MongoDB不需要任何固定模式,但有时我们希望从一个结构迁移到另一个结构。
我最近正在处理一个小数据集(~200K),并决定循环现有数据,转换数据模型并插入新集合。事实证明我们的vps并不那么强大,使用php驱动程序我只能在确保跟随后达到约300插入/秒:
我想知道我是否只选择了错误的迁移路径,或者在MongoDB中处理架构更改时是否有一些最佳实践?
在收到一些建议后,我在迁移过程中将写入问题更改为0,这就是我所观察到的:
ensureIndex
w=0
与{{1}}一起消失了?除了不使用我们的PHP ORM进行迁移之外,还有更多优化的可能性吗?
答案 0 :(得分:1)
传输和序列化所有与PHP客户端之间的内容可能会增加很多开销。从shell运行迁移将是最快的。使用update撰写或使用带有forEach的光标进行迭代并拨打save。
请参阅使用游标MongoDB update multiple records of array的示例(底部)。
了解游标的snapshot问题。如果集合没有分片,可能需要幂等更新或使用快照。