mongodb 更新嵌套对象数组中的值

编程入门 行业动态 更新时间:2024-10-08 10:49:03

mongodb 更新<a href=https://www.elefans.com/category/jswz/34/1771299.html style=嵌套对象数组中的值"/>

mongodb 更新嵌套对象数组中的值

我想更新 3 层深嵌套的对象数组中的标志。

我有这个年龄数组:

[20, 25]

我想为那些有 flag: 1type: students

的用户设置 ages: 20 or 25

这是我的用户收藏:

{
    "_id": "wef324DGSshf",
    "userTypes": [
        {
            "type": "students",
            "users": [
                {
                    "name": "John",
                    "age": 20,
                    "flag": 0
                },
                {
                    "name": "Mike",
                    "age": 25,
                    "flag": 0
                }
            ]
            
        },
        {
            "type": "students",
            "users": [
                {
                    "name": "Henry",
                    "age": 40,
                    "flag": 0
                },
                {
                    "name": "Nick",
                    "age": 25,
                    "flag": 0
                }
            ]
            
        },
        {
            "type": "teachers",
            "users": [
                {
                    "name": "Kim",
                    "age": 20,
                    "flag": 0
                },
                {
                    "name": "Charles",
                    "age": 25,
                    "flag": 0
                }
            ]
            
        }
    ]
}

更新后我期待这样的回应:

{
    "_id": "wef324DGSshf",
    "userTypes": [
        {
            "type": "students",
            "users": [
                {
                    "name": "John",
                    "age": 20,
                    "flag": 1
                },
                {
                    "name": "Mike",
                    "age": 25,
                    "flag": 1
                }
            ]
            
        },
        {
            "type": "students",
            "users": [
                {
                    "name": "Henry",
                    "age": 40,
                    "flag": 0
                },
                {
                    "name": "Nick",
                    "age": 25,
                    "flag": 1
                }
            ]
            
        },
        {
            "type": "teachers",
            "users": [
                {
                    "name": "Kim",
                    "age": 20,
                    "flag": 0
                },
                {
                    "name": "Charles",
                    "age": 25,
                    "flag": 0
                }
            ]
            
        }
    ]
}

到目前为止我尝试过的是这个查询:

Users.update({},
{
  "$set": {
    "userTypes.$[ut].users": {
      "flag": 1
    }
  }
},
{
  arrayFilters: [
    {
      "ut.type": 'students',
      "ut.age": {$in: [20, 25]}
    }
  ],
  multi: true
});

我的解决方案没有更新所需的记录,任何人都可以帮助我针对这种情况进行正确的查询吗?

回答如下:

因为你有两层数组,每层都有一个条件,你需要在 arrayFilters:

上有两个条件
db.collection.update({},
{
  "$set": {
    "userTypes.$[ut].users.$[user].flag": 1
  }
},
{
  arrayFilters: [
    {
      "ut.type": "students"
    },
    {
      "user.age": {
        $in: [
          20,
          25
        ]
      }
    }
  ],
  multi: true
})

在游乐场示例中查看它是如何工作的

更多推荐

mongodb 更新嵌套对象数组中的值

本文发布于:2024-05-13 13:29:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759629.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:嵌套   组中   对象   mongodb

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!