我搜索了一些以前的線程,但基于我如何實現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更新查詢的全部内容,希望文章能夠幫你解決所遇到的問題。
如果覺得真正的電腦專家網站内容還不錯,歡迎将真正的電腦專家推薦給好友。
有話要說...