【问题标题】:update all elements in sub array based on _id根据 _id 更新子数组中的所有元素
【发布时间】:2021-09-24 23:36:38
【问题描述】:

我在 Mongo 中有这些数据:

{
    "_id" : ObjectId("505fd43fdbed3dd93f0ae088"),
    "categoryName" : "Cat 1",
     "media" : {
        "logo" : "images (1).jpg",
        "pictures" : [ 
            {
                "file_name" : "Plr9_GA26JcA.png",
                "status" : false
            }, 
            {
                "file_name" : "images (1).jpg",
                "status" : false
            }, 
        ]
    }
},
{
    "_id" : ObjectId("505fd43fdbed3dd93f0ae089"),
    "categoryName" : "Cat 2",
     "media" : {
        "logo" : "images (1).jpg",
        "pictures" : [ 
            {
                "file_name" : "Plr9_GA26JcA.png",
                "status" : false
            }, 
            {
                "file_name" : "images (1).jpg",
                "status" : false
            }, 
        ]
    }
}

现在我想将id ObjectId("505fd43fdbed3dd93f0ae088")的每张图片状态更新为false

喜欢:

{
    "_id" : ObjectId("505fd43fdbed3dd93f0ae088"),
    "categoryName" : "Cat 1",
     "media" : {
        "logo" : "images (1).jpg",
        "pictures" : [ 
            {
                "file_name" : "Plr9_GA26JcA.png",
                "status" : true
            }, 
            {
                "file_name" : "images (1).jpg",
                "status" : true
            }, 
        ]
    }
}

我已经尝试过以下方法

db.services.update(

    // Criteria
    {
        '_id' : ObjectId("505fd43fdbed3dd93f0ae088"),
    },

    // Updates
    {
        $set : {
            'media.pictures.$.status': true
        }
    }
)

提前感谢您的帮助!

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query


    【解决方案1】:

    您可以为此使用positional all operator

    db.collection.update({ _id: ObjectId("505fd43fdbed3dd93f0ae088") }, { $set: { "media.pictures.$[].status": true } })
    

    Mongo Playground

    【讨论】:

      猜你喜欢
      • 2019-03-23
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多