我有一个集合,我想运行findAndUpdate,我想用我拥有的文档更新文档,但排除特定的字段...这可能吗?
例如,我有一个:
{
"name": "john",
"age": 30,
"city": "new york"
}
现在我想使用findAndUpdate更新它,
{
"name": "john",
"age": 30,
}
使用findAndUpdate更新它,但是保留 "city "这个字段。
我知道可以使用$set,但是我需要指定所有的字段,而且字段很多,所以想避免混乱。
谢谢
使用 $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" }