我有像
这样的文档 {"_id":100, "age": {"bob": 20, "jack": 30}}
我只想更新现有人的年龄,但如果我更新不存在的用户:
db.products.update({ _id: 100 }, {$set: { "age.tom": 10 }})
,
mongo将创建“tom”并设置不是我期望的年龄。
相关文档:https://docs.mongodb.com/manual/tutorial/update-documents/
如果为不存在的字段指定虚线路径,$ set将根据需要创建嵌入文档,以实现字段的虚线路径。
对于子字段而不是upsert
的任何方式都可以进行更新吗?
答案 0 :(得分:2)
db.example.update({ "age.tom":{$exists:true} },{ $set: { "age.tom": 10 }})
如果您希望"_id"
作为过滤器,
db.example.update({"_id" : 100, "age.tom":{$exists:true} },{ $set: { "age.tom": 10 }})