我有这个:
//users collection:
{
personal_info: {
first_name: "John",
address: {
city: "New york",
street: "A"
}
}
}
我要对此进行下一次更新:
req.body = {
"address.street": "B"
}
db.users.update({}, {$set: req.body}, err => {
...
});
如您所见,我拿走了整个文档,并要求mongo仅更新集合中的更改。
这可能吗?
Mongo代替了整个文档并替换它并设置了一个新文档:
{
personal_info: {
first_name: "John",
address: {
street: "B"
}
}
} // notice that "address.city" is gone
答案 0 :(得分:1)
您正在使用其他路径更新文档
您的更新将生成第一级地址,而无需处理您需要的字段。
基于您的req.body
db.users.update({}, {$set: req.body}
像这样更新文档
{
"_id" : ObjectId("5c2e4872e44cfe4170bc1565"),
"personal_info" : {
"first_name" : "John",
"address" : {
"city" : "New york",
"street" : "A"
}
},
"address" : {
"street" : "B"
}
}
因为您的地址在personal_info
字段内
要执行所需的操作,必须指定正确的根目录。
db.sample.update({}, {$set: {"personal_info.address.street" : "B"}})