是否可以使用findAndUpdate并排除某些字段?

问题描述 投票:0回答:1

我有一个集合,我想运行findAndUpdate,我想用我拥有的文档更新文档,但排除特定的字段...这可能吗?

例如,我有一个:

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

现在我想使用findAndUpdate更新它,

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

使用findAndUpdate更新它,但是保留 "city "这个字段。

我知道可以使用$set,但是我需要指定所有的字段,而且字段很多,所以想避免混乱。

谢谢

mongodb reactivemongo
1个回答
0
投票

使用 $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" }
© www.soinside.com 2019 - 2024. All rights reserved.