如何在documnet中更新数组中的字段

时间:2019-02-02 07:02:15

标签: mongodb go

我有一个具有以下结构的文档。我想在数组 files 中插入一个新文件,然后将所有其他文件状态设置为“ INACTIVE”。插入后,我正在尝试按照以下代码更新数组的其他文件,但无法匹配。

{
  {
 "id":"fafsahjaf867rwhrbjw",
 "files" : [
            {"name": "123", status:"ACTIVE"},
            {"name": "124", status:"ACTIVE"},
            {"name": "125", status:"ACTIVE"},
            {"name": "126", status:"ACTIVE"},
           ] 
   },
}

    query = bson.M{ "id": productId,
    "files": bson.M{
        "$not": bson.M{"$elemMatch": fileObj}}}

    update = bson.M{
    "$set": bson.M{
        "files.$.status": "INACTIVE",
    },
  }

1 个答案:

答案 0 :(得分:0)

如果您的Mongo> = 3.6,请参见下面的示例,以编辑除最后一个名称为126以外的所有内容。

db.collection.update(
  { "id" : "fafsahjaf867rwhrbjw", "files.name": "126" },
  { "$set": { "files.$[elem].status": "INACTIVE" } },
  { "arrayFilters": [{ "elem.name": {$ne : "126"} }], "multi": true }
)

How to Update Multiple Array Elements in mongodb那里获得了该解决方案

相关问题