在MongoDB中,如何使用$ set更新嵌套值/嵌入文档?

Dre*_*eur 35 mongodb mongodb-query

在MongoDB中,您如何使用$set更新嵌套值?

例如,考虑具有以下文档的集合人员:

{
  _id: ObjectId("5a7e395e20a31e44e0e7e284"),
  name: "foo",
  address: { street: "123", town: "bar" }
}
Run Code Online (Sandbox Code Playgroud)

如何更新street嵌入在外地address文件从"123""Main Street"

Nie*_*est 65

使用点符号:

db.people.update({ }, { $set: { "address.street": "Main Street" } })
Run Code Online (Sandbox Code Playgroud)

  • 即使地址不存在,这是否有效?我知道如果地址上不存在$ set将创建street但是如果祖先属性不存在则行为是什么?此外,您的链接需要登录. (5认同)
  • @Tom,感谢关于链接的单挑,我已修复它.要回答您的问题:如果它们不存在,它将为您创建所需的祖先属性. (3认同)
  • @Tom是的,它会的.它会将整个对象创建到您正在设置的字段.(迟到的回复,但希望这对其他绊倒这个问题的人有用) (3认同)