【发布时间】:2012-07-17 21:25:58
【问题描述】:
嗯,我正在修复一个包含 1 亿条记录的 MongoDB 集合。以前的开发人员用真正错误的东西覆盖了默认的_id。现在,当我修复它时,如何重新生成 _id 索引?除了mongoRestore,还有什么更快的方法吗?
这是我的更新过程:
1) 将数据库从原始数据库复制到另一个数据库。
2) 删除所有记录的 _id。
3)为所有记录重新生成_id(这就是我不知道该怎么做)
4)使用新的_id将集合复制回原始数据库(或者另一种方法是从新的/临时数据库中制作mongoDump,然后将文件发送到原始数据库,MongoRestore,即(然后每条记录都会有新的_id 。这种方式会起作用,但似乎更慢。)
【问题讨论】:
-
为什么你认为你必须再生?
-
嗯.. 因为 _id 被不正确的哈希值覆盖,导致冲突。所以,我需要删除旧的。然后用Mongo的默认方式恢复一个。
-
如何恢复 _id 值?如果您正在阅读每个文档然后更新_id,则无需重建索引。如果您想恢复到备份中的值,如何执行此操作取决于您的备份是如何进行的。
-
这就是我想知道的。如何恢复 Mongo 默认生成的 _id 值。这是我的步骤。 (见上文)
标签: mongodb indexing mongodb-indexes