更新 couchbase 中的嵌套数组

updating nested array in couchbase

使用下面给定的数据模型:

{
  "snapshots": [
    {
      "createdAt": "2019-03-15T06:31:04.447Z",
      "entries": [
        {
          "balance": 139763,
          "expiresOn": "3019-03-31T23:59Z"

        },
        {
          "balance": 46961,
          "expiresOn": "3019-03-31T23:59Z"

        }
      ]
    }
  ],
  "type": "account"
}

我正在尝试更新 snapshots 数组中 entries 数组中的 expiresOn 字段,下面是我试过但不起作用的查询。

UPDATE bucket
SET snapshot.entry.expiresOn = "2020-03-30T23:59Z"
FOR snapshot IN snapshots
  FOR entry IN snapshot.entries
END
WHERE type = "account"

成功了,这是一个愚蠢的错误。

json 模型中的内部数组应该是查询中的外部 for 循环。


UPDATE bucket
SET entry.expiresOn = "2020-03-30T23:59Z"
FOR entry IN snapshot.entries FOR snapshot IN snapshots END
WHERE type = "account"

下面是更新snapshots数组中entries数组中expiresOn字段的正确查询。 SET snapshot.entry.expiresOn = "2020-03-30T23:59Z" 可能会更新错误的地方或不会更新(由于快照的额外引用)。

UPDATE bucket AS b
SET entry.expiresOn = "2020-03-30T23:59Z"
FOR entry IN snapshot.entries FOR snapshot IN b.snapshots END
WHERE b.type = "account";