在MongoDB中,如何使用$set更新嵌套值/嵌入文档?
在MongoDB中,如何使用在MongoDB中,如何使用$set更新嵌套值/嵌入文档?,mongodb,mongodb-query,Mongodb,Mongodb Query,在MongoDB中,如何使用$set更新嵌套值 例如,考虑一个集合人>强>下面的文档: { _id: ObjectId("5a7e395e20a31e44e0e7e284"), name: "foo", address: { street: "123", town: "bar" } } 如何使用以下命令将地址文档中嵌入的街道字段从“123”更新为“Main street”?: 除了Niels的答案之外,还要验证嵌套值的“类型”。在我的例子中,它是由json形成的“字符串”。虽然这可
$set
更新嵌套值
例如,考虑一个集合<强>人>强>下面的文档:
{
_id: ObjectId("5a7e395e20a31e44e0e7e284"),
name: "foo",
address: { street: "123", town: "bar" }
}
如何使用以下命令将地址文档中嵌入的街道字段从“123”
更新为“Main street”
?:
除了Niels的答案之外,还要验证嵌套值的“类型”。在我的例子中,它是由json形成的“字符串”。虽然这可能不太可能,但请确保该值具有正确的类型 即使地址不存在,此功能也有效吗?我知道$set会在地址上不存在的情况下创建street,但如果祖先属性不存在,会有什么行为?另外,您的链接需要登录。@Tom,谢谢您提醒我链接,我已经修复了它。回答你的问题:如果不存在,它将为你创建所需的祖先财产。@Tom是的,它会的。它将创建整个对象,直到您正在设置的字段。(回复较晚,但希望这对其他在这个问题上结结巴巴的人有用)如果地址是数组,如何设置相同的字段。例如:{u id:ObjectId(“5a7e395e20a31e44e0e7e284”),姓名:“foo”,地址:[{街道:“123”,城镇:“酒吧”}]}
db.people.update({ }, { $set: { "address.street": "Main Street" } })