如何解决嵌套 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 时,它会执行但实际上并没有改变任何内容:
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",},{
"type": "com.model.Phone","typeCode": "B_BUS",}
],"type": "com.model","updatedTimestamp": "2021-03-24T17:53:52.997+0000"
}
}
]
非常感谢您对我误入歧途的任何见解;提前致谢!
解决方法
全部 - 感谢所有正在审核的人,但我的团队成员之一想通了...如果有人遇到此问题,请查看有效的更新查询:
UPDATE `NoSQLDB` AS c
SET p.typeCode = “B_BUS” FOR p IN phones WHEN p.typeCode != ‘B_BUS’ END
WHERE c.type=‘com.model’
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。