我会尽力解释问题......执行后:
delete edge SOME_EDGE from (select from SourceNode where foo=bar) to (select from TargetNode where foo=bar)
当删除边的最后一个引用时,类型名称仍然存在于具有空列表的SomeClass中,即:
"out_SOME_EDGE": []
与in_SOME_EDGE和反向关系类似。
然后执行查询时:
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仍然可以有有效的引用。
我试图找到一个解决方案越深入,看起来这是一个错误,即顶点被允许有空参考列表的边,或者当删除最后一个目标参考时不会删除这些边。 / p>
答案 0 :(得分:1)
空列表表示没有关系(输入/输出)
我认为删除边缘命令如果删除了最后一个引用,则不会删除该字段。
尝试此操作以找到空关系
select from SourceNode where out_SOME_EDGE is not null or out_SOME_EDGE.size() = 0
答案 1 :(得分:1)
该集合仍然是托管新项目。如果要将其设置为null,请执行以下命令:
update V out_SOME_EDGE = NULL where out_SOME_EDGE.size() = 0
或者,更好的是,要完全删除属性而不是将其设置为null,请执行以下命令:
update V remove out_SOME_EDGE where out_SOME_EDGE.size() = 0