如何使用Java Driver更新MongoDB中Array的嵌入文档中的字段值

时间:2017-02-01 10:01:02

标签: java mongodb

我的文档中有以下结构:

{
  "_id": ObjectId("5891a85bccaad513a844308f"),
  "sites": [
    {
      "site": "site1",
      "url": "site1.com",
      "status": 1,
    },
    {
      "site": "site2",
      "url": "site2.com",
      "status": 1,
    },
    {
      "site": "site3",
      "url": "site3.com",
      "status": 1,
    }
  ]
}

然后我将所有网站加载到UI。然后我会做一些更改,如跟随图像并点击更新。我删除了“site3”。 enter image description here  那么我的结构应该如下更新。 site3状态应更新为0

{
  "_id": ObjectId("5891a85bccaad513a844308f"),
  "sites": [
    {
      "site": "site1",
      "url": "site1.com",
      "status": 1,
    },
    {
      "site": "site2",
      "url": "site2.com",
      "status": 1,
    },
    {
      "site": "site3",
      "url": "site3.com",
      "status": 0,
    }
  ]
}

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用位置$更新。

查询过滤器在数组中找到匹配的site,更新部分会将status设置为0到匹配元素。

collection.updateOne(new Document("_id", new ObjectId("5891a85bccaad513a844308f")).append("sites.site", "site3"), Updates.set("sites.$.status", 0));