orientdb SQL更新边缘?(orientdb sql update edge?)

2019-10-21 03:44发布

我一直在瞎搞与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项的语法,但找不到任何(发现%,但这似乎是序列化没有为SQL)。

(1)有没有办法做到这一点呢? 我该如何更新连接? 有没有连的方式,还是我不得不创建一个新的边缘,并删除旧的?

(2)当写这个,就来到了我的脑海里,也许边缘不是在这种情况下要走的路。 也许我应该用一个链接。 我不得不说,我不知道什么时候使用它,或者什么都涉及到使用其中的任何影响。 我也发现这个虽然:

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)不--Still sure--

Answer 1:

CREATE EDGEDELETE EDGE命令有这样的目标:避免用户与底层结构进行战斗。

但是,如果你想这样做(有点“脏”),试试这个:

UPDATE Persons SET phone=000000, out_Inside=(
  select from Rooms where room_id=5) where person_id=8


Answer 2:

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
)
)

它工作得很好



文章来源: orientdb sql update edge?