目前并不支持原生 ngql 和 cypher 语法混用,你可以把他们看成是两种语言,这样设计的原因是混用会带来很多问题。目前 match 语句是办不到的。
可以试试原生 ngql。
比如:
((lookup on table yield id(vertex) as id) MINUS (lookup on table yield id(vertex) as id | go from $-.id over * BIDIRECT yield $-.id as id)) | delete $-.id
((lookup on table | yield $-.VertexID as id)
MINUS
(lookup on table | yield $-.VertexID as id | go from $-.id over * BIDIRECT yield $-.id as id))
| delete $-.id
你好,我们现在还有个需求是,查询某个节点【所有】的上游节点和【所有】下游节点
【目前处理方式】:GO {hop} step FROM “{vid}” OVER blood YIELD DISTINCT blood._dst as nodeList;写了一个递归调用这个语句,如果结果为空,则表示没有节点了
【问题】:血缘出现了环,例如:a->b->c->a,造成了代码死循环,因为go语句是边可以重复,所以一直能查到点。
【解决方案】:将go改成了match语法,因为match是边不能重复,但是由于生产环境数据量较大,使用match速度慢,消耗没存,这个方案就pass了,请问,这种场景有没有更好的解决方式