[英]orientdb sql update edge?
我一直在與orientdb sql糾纏在一起,我想知道是否有一種方法可以更新頂點的邊緣以及其中的一些數據。
假設我具有以下數據:頂點:人,房間邊緣:內部(從人到房間)
就像是:
UPDATE Persons SET phone=000000, out_Inside=(
select @rid from Rooms where room_id=5) where person_id=8
顯然,以上方法不起作用。 它引發異常:
Error: java.lang.ClassCastException: com.orientechnologies.orient.core.id.ORecordId cannot be cast to com.orientechnologies.orient.core.db.record.ridbag.ORidBag
我試圖在github上查看源代碼,以查找帶有1個項的bag的語法,但是找不到任何語法(找到%,但這似乎是針對SQL的序列化)。
(1)那有什么辦法嗎? 如何更新連接? 有沒有辦法,還是我被迫創建一個新的邊並刪除舊的邊?
(2)在撰寫本文時,我想到也許在這種情況下,邊緣不是可行的方法。 也許我應該改用LINK。 我不得不說我不確定何時使用哪個,或者使用它們中的任何一個意味着什么。 我確實發現了這一點:
https://groups.google.com/forum/#!topic/orient-database/xXlNNXHI1UE
Lvc @的頂部評論3,他說:
"The suggested way is to always create an edge for relationships"
另外,即使我應該使用鏈接,也請回復(1)。 無論如何我都會很高興知道答案。
ps在我的情況下,一個人只能在一個房間里。 將來這很可能不會改變。 顯然,該邊緣的優勢在於,萬一我可能想要更改它(無論如何不太可能),它將非常容易。
(1)解決方案只是刪除字段選擇。 感謝Lvca指出!
(2)-仍不確定-
CREATE EDGE
和DELETE EDGE
命令的目標是:避免用戶與底層結構發生沖突。
但是,如果要這樣做(有點“臟”),請嘗試以下一種方法:
UPDATE Persons SET phone=000000, out_Inside=(
select from Rooms where room_id=5) where person_id=8
update EDGE Custom_Family_Of_Custom
set survey_status = '%s',
apply_source = '%s'
where @rid in (
select level1_e.@rid from (
MATCH {class: Custom, as: custom, where: (custom_uuid = '%s')}.bothE('Custom_Family_Of_Custom') {as: level1_e} .bothV('Custom') {as: level1_v, where: (custom_uuid = '%s')} return level1_e
)
)
它運作良好
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.