首页 > 解决方案 > 是否可以使用 findAndUpdate 并排除某些字段?

问题描述

我有一个要在其上运行 findAndUpdate 的集合,并且我想使用我拥有但排除特定字段的文档来更新文档...这可能吗?

例如,我有:

{
 "name": "john",
 "age": 30,
 "city": "new york"
}

现在我想更新它:

{
 "name": "john",
 "age": 30,
}

使用 findAndUpdate,但保留“城市”原样......

我知道它可以使用 $set 但我需要指定所有字段及其分配的字段,以便避免混乱。

谢谢

标签: mongodb

解决方案


Using$set不需要指定所有字段,并且可以与findAndModify.

例如仅更新age

testrs0:PRIMARY> db.test.find({})
{ "_id" : ObjectId("5ee0adfda1f4463a43777b2e"), "name" : "john", "age" : 30, "city" : "new york" }

testrs0:PRIMARY> db.test.findAndModify({query: {name:'john'}, update:{$set:{age:31}}, new:true})
{
    "_id" : ObjectId("5ee0adfda1f4463a43777b2e"),
    "name" : "john",
    "age" : 31,
    "city" : "new york"
}

testrs0:PRIMARY> db.test.find({})
{ "_id" : ObjectId("5ee0adfda1f4463a43777b2e"), "name" : "john", "age" : 31, "city" : "new york" }

推荐阅读