根据Neo4j关于WHERE
子句的文档,我应该能够使用具有如下属性的模式过滤搜索:
SELECT *
FROM cypher('test', $$
MATCH (n:Person)
WHERE (n)-[:KNOWS]-({name: 'Timothy'})
RETURN n.name, n.age
$$) AS (name agtype, age agtype);
但是,我得到一个错误,它说:
ERROR: syntax error at or near ":"
LINE 4: WHERE (n)-[:KNOWS]-({name: 'Timothy'})
^
我猜这个特性还没有在AGE中实现,但是有没有一种方法可以让它工作,或者有没有一种替代方法可以得到类似的结果?
6条答案
按热度按时间9gm1akwq1#
是的,您可以使用
exists()
查找具有属性的路径是否存在,如aor9mmx12#
到目前为止,我们还不能在Apache时代恢复无向关系。您需要建立定向关系,并且只能检索定向关系。
您提到的查询将给予您一个错误,因为在该查询中没有边的方向。
我们可以尝试的方法如下:
现在,您已经将其视为无方向或双向边,并可以使用该查询检索它。
cfh9epnr3#
要得到类似的结果,可以完全忽略
WHERE
子句:这样,您将找到具有关系
KNOWS
和Timothy
的节点的双向关系,反之亦然。blmhpbnm4#
您可以简单地使用以下操作:
MATCH
子句将使所有n个用户都具有指定的条件,这将与AGE一起工作,我自己也试过了。我希望这能解决问题。
kxe2p93d5#
对于在Apache时代检索关系应该是定向的,你不能检索非定向关系。首先,创建定向关系,然后可以使用以下查询来实现类似的结果:
在上面的查询中,我们将匹配m和p之间的关系,然后使用条件
WHERE m.name = 'Timothy'
,根据m的name属性过滤节点。如果匹配,则返回p的name和age。我们在这里也假设知道关系存在,正如我已经提到的。dgtucam16#
Apache AGE目前只支持定向关系,这就是错误的原因。更新后的声明将是: