假如我们想更新下面这条记录中的密码,由112233改为v2aicn,你该怎么办?

{
    "id": "123456",
    "user": {
        "name": "xiaoming",
        "password": "112233"
    }
}

很简单是不是,上手就可以写:

db.testCol.update_one({"id": "123456"}, {"$set": {"user": {"password": "v2aicn"}}})

改完一查发现不对,记录被改成了下面这样。

{
    "id": "123456",
    "user": {
        "password": "v2aicn"
    }
}

咦~~~我的name呢?

如果只修改其中一个字段要下面这样写:

db.testCol.update_one({"id": "123456"}, {"$set": {"user.password": "v2aicn"}})

现在看看就正常了:

{
    "id": "123456",
    "user": {
        "name": "xiaoming",
        "password": "v2aicn"
    }
}