当前位置:首页 > 科技 > 正文

嵌套的N1QL更新查询

提问开始:

我搜索了一些以前的线程,但基于我如何实现Couchbase的N1QL更新查询,我不能完全弄清楚我做错了什么。我运行的用于选择目标更新的查询运行得很好:

SELECT p FROM `NoSQLDB` AS c UNNEST c.phones as p
WHERE c.type='com.model' AND p.typeCode != 'B_BUS'

这将提供以下结果:

[
  {
    "p": {
      "type": "com.model.Phone",
      "typeCode": "H_HOME",
    }
  },
  {
    "p": {
      "type": "com.model.Phone",
      "typeCode": "H_HOME",
    }
  }
]

这是我想要更新的数据,但是,当我使用下面的update语句更新typeCode时,它会执行,但实际上不会更改任何内容:

UPDATE `NoSQLDB` AS c SET p.typeCode = 'B_BUS'
FOR p WITHIN c.phones WHEN c.type='com.model' AND
p.typeCode != 'B_BUS' END LIMIT 1

我也尝试了一下,但也没有做任何事情,我想也许父类型是不可用的:

UPDATE `NoSQLDB` AS c SET p.typeCode = 'B_BUS'
FOR p WITHIN c.phones WHEN p.type='com.model.Phone' AND
p.typeCode != 'B_BUS' END LIMIT 1

如果父JSON有任何相关性,则它看起来如下所示:

[
  {
    "NoSQLDB": {
      "id": "01234",
      "keyType": "BANANA",
      "phones": [
        {
          "type": "com.model.Phone",
          "typeCode": "H_HOME",
        },
        {
          "type": "com.model.Phone",
          "typeCode": "B_BUS",
        }
      ],
      "type": "com.model",
      "updatedTimestamp": "2021-03-24T17:53:52.997+0000"
    }
  }
]

任何关于我误入歧途的见解都将不胜感激;提前谢谢!

回答开始:得票数 2

所有-感谢任何人谁正在审查,但我的一个团队成员认为它out...in任何人在这个问题上发生的情况,请查看工作的更新查询:

UPDATE `NoSQLDB` AS c
SET p.typeCode = “B_BUS” FOR p IN phones WHEN p.typeCode != ‘B_BUS’ END
WHERE c.type=‘com.model’
总结

以上是真正的电脑专家为你收集整理的嵌套的N1QL更新查询的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得真正的电脑专家网站内容还不错,欢迎将真正的电脑专家推荐给好友。

你可能想看:

有话要说...

取消
扫码支持 支付码