📜  mongodb 在数组中设置对象属性 (1)

📅  最后修改于: 2023-12-03 15:32:57.135000             🧑  作者: Mango

MongoDB 在数组中设置对象属性

在 MongoDB 中,可以将多个对象存储在一个数组中。每个对象也可以有自己的属性。

本文将介绍如何在 MongoDB 中设置数组中的对象属性。

语法
db.collection.update(
    { <query> },
    { $set: { "<array>.$[<identifier>].<field>": <value> } },
    { arrayFilters: [ { <identifier>: <condition> } ] }
)
参数
  • collection: 集合的名称。
  • query: 查询条件。
  • array: 数组名称。
  • identifier: 数组中要更改的对象标识符。
  • field: 要更新的对象属性。
  • value: 对象属性的新值。
  • condition: 更新对象的条件。
示例

假设我们有以下文档:

{
    "_id" : ObjectId("5f7e28767d80629a3f10d67c"),
    "name" : "John",
    "hobbies" : [
        {
            "name" : "reading",
            "level" : "beginner"
        },
        {
            "name" : "swimming",
            "level" : "advanced"
        }
    ]
}

要将 "name" 为 "reading" 的爱好的 "level" 更改为 "intermediate",请使用以下代码:

db.collection.update(
   { "name": "John" },
   { $set: { "hobbies.$[element].level": "intermediate" } },
   { arrayFilters: [ { "element.name": "reading" } ] }
)

更新后的文档如下:

{
    "_id" : ObjectId("5f7e28767d80629a3f10d67c"),
    "name" : "John",
    "hobbies" : [
        {
            "name" : "reading",
            "level" : "intermediate"
        },
        {
            "name" : "swimming",
            "level" : "advanced"
        }
    ]
}

上述代码使用了数组过滤器,过滤器筛选出了名称为 "reading" 的对象。这个对象的 "level" 属性被更改为 "intermediate"。

更多关于 MongoDB 的信息,请访问 MongoDB官方网站