【发布时间】:2017-03-07 18:49:37
【问题描述】:
有没有办法通过单个查询在 MongoDB 中插入或更新/替换多个文档?
假设以下集合:
[
{_id: 1, text: "something"},
{_id: 4, text: "baz"}
]
现在我想添加多个文档,其中一些文档可能已经在集合中。如果文档已经在集合中,我想更新/替换它们。例如,我想插入以下文档:
[
{_id:1, text: "something else"},
{_id:2, text: "foo"},
{_id:3, text: "bar"}
]
查询应该插入带有_id 2 和3 的文档。它还应该更新/替换带有_id 1 的文档。在此过程之后,集合应如下所示:
[
{_id:1, text: "something else"},
{_id:2, text: "foo"},
{_id:3, text: "bar"},
{_id:4, text: "baz"}
]
一种方法可能是使用insertMany:
db.collection.insertMany(
[ {...}, {...}, {...} ],
{
ordered: false,
}
)
如果出现重复,该查询将发出一个writeErrors,其中包含一个对象数组,其中包含未能插入的文档的索引。我可以浏览它们并更新它们。
但是这个过程很麻烦。有没有办法在 一个 查询中插入或更新/替换许多文档?
【问题讨论】:
标签: mongodb