mongodb通过唯一键插入或更新多个文档

时间:2018-10-15 17:13:41

标签: mongodb

我想定期从外部资源获取项目列表,并将其保存到集合中。

有几种可能的解决方案,但它们不是最佳的,例如:

  1. 删除整个集合并保存新的项目列表

  2. 使用“ find({})”从集合中获取所有项目,并使用它过滤掉现有项目并保存不存在的项目。

但是更好的解决方案是设置唯一的密钥,然后执行某种“更新或插入”操作。 现在在保存项目时,唯一键已经存在,我将收到错误消息 有办法做到吗?

** upsert不会执行任何操作,因为它会更新具有相同值的所有项目,因此实际上仅适用于单个文档

1 个答案:

答案 0 :(得分:0)

我觉得您可以简单地通过将“ ordered”选项设置为“ false”的“正常” insertMany来实现自己想要的目标。 documentation声明

  

请注意,已插入一个文档:_id的第一个文档:13   将成功插入,但第二次插入将失败。这将   还可以阻止插入队列中剩余的其他文档。   如果命令设置为false,则插入操作将继续执行   剩余文件。

因此,您将获得“重复密钥”异常,但是,您可以根据情况直接忽略。