我提供一个简单的示例来描述我正在寻找的内容。
我有一个城市里最古老的人的收藏。 目前看起来是这样的:
{ "name" : "Arthur", "city" : "New York", "age" : 42}
{ "name" : "Arthur", "city" : "London", "age" : 42}
{ "name" : "Berta", "city" : "New York", "age" : 42}
我创建了以下索引:
db.people.createIndex( { name:1, city:1 }, { unique: true} )
我想根据以下条件执行更新插入:
- 如果“姓名”和“城市”没有这样的人,请插入
- 如果“姓名”和“城市”都有人,则将“年龄”更新为较大者
所以如果我执行更新插入
{ "name" : "Arthur", "city" : "New York", "age" : 43}
之后的集合将如下所示:
{ "name" : "Arthur", "city" : "New York", "age" : 43}
{ "name" : "Arthur", "city" : "London", "age" : 42}
{ "name" : "Berta", "city" : "New York", "age" : 42}
有人可以告诉我 mongo shell 的 upsert 命令吗?
最佳答案
您可以使用以下查询来执行此操作
db.col.update(
{ "name" : "Arthur", "city" : "New York", age: {$lte: 43}},
{ "name" : "Arthur", "city" : "New York", "age":43},
{upsert: true})
参见{upset: true}
,此选项确保如果存在现有记录,则仅更新它,否则插入新文档。
您可以通过MongoDB Website获取更多信息
关于mongodb - 如何在 MongoDB 中执行条件更新插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35895252/