mongodb - 是否可以使用 findAndUpdate 并排除某些字段?
问题描述
我有一个要在其上运行 findAndUpdate 的集合,并且我想使用我拥有但排除特定字段的文档来更新文档...这可能吗?
例如,我有:
{
"name": "john",
"age": 30,
"city": "new york"
}
现在我想更新它:
{
"name": "john",
"age": 30,
}
使用 findAndUpdate,但保留“城市”原样......
我知道它可以使用 $set 但我需要指定所有字段及其分配的字段,以便避免混乱。
谢谢
解决方案
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" }
推荐阅读
- javascript - Puppeteer:获取网页的完整 HTML 内容,如 innerHTML,但包括任何影子根?
- java - JBoss 异步记录器问题
- javascript - 如果单击复选框,如何获得不同的输出?
- python - 递归合并排序的功能实现?
- java - java.sql.SQLException:无法加载 JDBC 驱动程序类“oracle.jdbc.OracleDriver”
- swift - 类型“MatchedValue”不符合协议“可解码”
- androidx - 在全屏 androidx.BiometricPrompt 中禁用后退按钮
- .net - 带BufferBlock的Producer/Consumer,即使buffer中没有product,如何周期性唤醒?
- timer - 完成线程后,倒数计时器仍在工作..这是为什么?
- php - Laravel 7 在输入为空时显示“整数”验证消息,即使它不是必需的