嵌套的 N1QL 更新查询
Nested N1QL Update Query
我搜索了一些先前的主题,但根据我为 Couchbase 实现 N1QL 更新查询的方式,无法完全弄清楚我做错了什么。我的查询 运行 select 我的目标更新工作正常:
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",
}
}
]
这是我要更新的数据,但是,当我使用以下更新语句去更新 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"
}
}
]
非常感谢任何关于我误入歧途的见解;提前谢谢你!
所有 - 感谢任何正在审查的人,但我的一位团队成员已经解决了...如果有人遇到过这个问题,请查看有效的更新查询:
UPDATE `NoSQLDB` AS c
SET p.typeCode = “B_BUS” FOR p IN phones WHEN p.typeCode != ‘B_BUS’ END
WHERE c.type=‘com.model’
我搜索了一些先前的主题,但根据我为 Couchbase 实现 N1QL 更新查询的方式,无法完全弄清楚我做错了什么。我的查询 运行 select 我的目标更新工作正常:
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",
}
}
]
这是我要更新的数据,但是,当我使用以下更新语句去更新 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"
}
}
]
非常感谢任何关于我误入歧途的见解;提前谢谢你!
所有 - 感谢任何正在审查的人,但我的一位团队成员已经解决了...如果有人遇到过这个问题,请查看有效的更新查询:
UPDATE `NoSQLDB` AS c
SET p.typeCode = “B_BUS” FOR p IN phones WHEN p.typeCode != ‘B_BUS’ END
WHERE c.type=‘com.model’