Orientdb 通过SQL删除边缘关系

Orientdb 通过SQL删除边缘关系,orientdb,Orientdb,我会尽力解释这个问题。。。执行后: delete edge SOME_EDGE from (select from SourceNode where foo=bar) to (select from TargetNode where foo=bar) 当删除边的最后一个引用时,类型名称仍保留在具有空列表的SomeClass中,即: "out_SOME_EDGE": [] 类似于in_的一些_边和逆关系 然后在执行查询时: select from SourceNode where out_SO

我会尽力解释这个问题。。。执行后:

delete edge SOME_EDGE from (select from SourceNode where foo=bar) to (select from TargetNode where foo=bar)
当删除边的最后一个引用时,类型名称仍保留在具有空列表的SomeClass中,即:

"out_SOME_EDGE": []
类似于in_的一些_边和逆关系

然后在执行查询时:

select from SourceNode where out_SOME_EDGE is not null
仍然返回那些具有空列表引用的类

显然

select from SourceNode where out_SOME_EDGE=[]
什么都不做。如何定位和/或删除这些过时/空的边缘参照

update SourceNode remove out_SOME_EDGE where out_SOME_EDGE is not null
update TargetNode remove in_SOME_EDGE where in_SOME_EDGE is not null
当然可以,但这不是最好的方法,因为TargetNode仍然可以有有效的引用


我越深入地寻找解决方案,就越觉得允许顶点具有带有空引用列表的边,或者在删除最后一个目标引用时不删除这些边是一个错误。

空列表意味着没有关系(输入/输出)

我认为,如果删除了最后一个引用,那么delete edge命令不会删除该字段

尝试此操作以查找空关系

select from SourceNode where out_SOME_EDGE is not null or out_SOME_EDGE.size() = 0

该集合保留以承载新项目。如果要将其设置为null,请执行以下操作:

update V out_SOME_EDGE = NULL where out_SOME_EDGE.size() = 0
update V remove out_SOME_EDGE where out_SOME_EDGE.size() = 0
或者,更好的做法是完全删除属性,而不是将其设置为null,执行以下操作:

update V out_SOME_EDGE = NULL where out_SOME_EDGE.size() = 0
update V remove out_SOME_EDGE where out_SOME_EDGE.size() = 0