我正面临一个奇怪的行为,当试图立即重命名集合中所有文档中的字段时,只会导致部分更新(某些文档仍然保持原样)。
完成的操作:
col.updateMany({'field1.$id': {$exists: true}}, {$rename: {'field1.$id': 'field_id'}})
col.updateMany({'field1': {$exists: true}}, {$unset: {'field1': 1 }});
此后,某些文档仍然具有field1
(有效的DBRef)并且没有field_id
。集合的大小似乎无关紧要,因为无论大小都可以复制。
请注意,此步骤中的数据迁移非常繁重,需要进行数千次此类操作和其他操作。
三个分片,默认写关注点,oplogsizeMB
设置为5000。
有什么想法吗?