有没有办法让mongorestore替换数据库中现有的记录而不是跳过它,这是默认行为?
我目前正在使用mongodb的最新2.4.x版本。
答案 0 :(得分:47)
你可以使用mongorestore的_drop参数
https://docs.mongodb.org/manual/reference/program/mongorestore/#cmdoption--drop
答案 1 :(得分:23)
没有。来自mongorestore:
如果还原到现有数据库,mongorestore将仅插入现有数据库,并且不执行任何类型的更新。如果现有文档在目标数据库和集合中具有相同的值_id字段,则mongorestore不会覆盖这些文档。
如果要使用mongorestore完全覆盖数据库或数据库中的集合,请删除数据库或集合(按vikas的答案指出的--drop参数检查)。如果要替换某些文档或合并重复文档,则需要编写自己的脚本来执行还原并自行实现更复杂的逻辑。
答案 2 :(得分:7)
如果你有一个小集合,你可以随时:
这会将优先级切换到转储文件,而不是数据库中的_ids。
答案 3 :(得分:3)
答案 4 :(得分:0)
我已经使用
解决了这个问题mongorestore --db database -c collection ~/path_to_bson > output.txt 2>&1
- E11000 duplicate key error collection ...ObjectId(...)
的行db.collection.remove({_id: ObjectId(...)})