mongorestore命令替换现有记录?

ber*_*tie 22 mongodb

有没有办法让mongorestore替换数据库中存在的记录而不是跳过它,这是默认行为?

我目前正在使用mongodb的最新2.4.x版本.

小智 53

你可以使用mongorestore的--drop参数

https://docs.mongodb.org/manual/reference/program/mongorestore/#cmdoption--drop

  • 值得注意的是,虽然“--drop”将帮助您覆盖文档,但它也会删除目标集合中不在备份文件中的所有文档。 (3认同)

wdb*_*ley 23

不.来自mongorestore:

如果还原到现有数据库,mongorestore将仅插入现有数据库,并且不执行任何类型的更新.如果现有文档在目标数据库和集合中具有相同的值_id字段,则mongorestore不会覆盖这些文档.

如果要使用mongorestore完全覆盖数据库或数据库中的集合,请删除数据库或集合(按照vikas的答案指出check -drop参数).如果要替换某些文档或合并重复文档,则需要编写自己的脚本来执行还原并自行实现更复杂的逻辑.


Tal*_*alt 9

如果您有一个小集合,您可以随时:

  1. 在其他地方mongodump你的目标集合
  2. 删除目标集合
  3. mongorestore原始转储文件
  4. mongorestore您在步骤1中创建的转储文件

这会将优先级切换到转储文件,而不是数据库中的_ids.