如何更新而不在Mongo中插入子字段?

时间:2016-08-20 07:11:08

标签: mongodb

我有像

这样的文档

{"_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的任何方式都可以进行更新吗?

1 个答案:

答案 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 }})