我想定期从外部资源获取项目列表,并将其保存到集合中。
有几种可能的解决方案,但它们不是最佳的,例如:
删除整个集合并保存新的项目列表
使用“ find({})”从集合中获取所有项目,并使用它过滤掉现有项目并保存不存在的项目。
但是更好的解决方案是设置唯一的密钥,然后执行某种“更新或插入”操作。 现在在保存项目时,唯一键已经存在,我将收到错误消息 有办法做到吗?
** upsert不会执行任何操作,因为它会更新具有相同值的所有项目,因此实际上仅适用于单个文档
答案 0 :(得分:0)
我觉得您可以简单地通过将“ ordered
”选项设置为“ false
”的“正常” insertMany来实现自己想要的目标。 documentation声明
请注意,已插入一个文档:_id的第一个文档:13 将成功插入,但第二次插入将失败。这将 还可以阻止插入队列中剩余的其他文档。 如果命令设置为false,则插入操作将继续执行 剩余文件。
因此,您将获得“重复密钥”异常,但是,您可以根据情况直接忽略。