我搜索了一些以前的线程,但基于我如何实现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更新查询的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得真正的电脑专家网站内容还不错,欢迎将真正的电脑专家推荐给好友。
有话要说...