有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用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) 个答案

  1. # 1 楼答案

    您可以使用位置^{}更新

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

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