Neo4j 如何在cypher中的关系名称中使用通配符

Neo4j 如何在cypher中的关系名称中使用通配符,neo4j,cypher,Neo4j,Cypher,我有这样的理论图形结构: (:Car)<-[:LIKES_C]-(:Person)-[:LIKES_B]->(:Bike) 它将搜索汽车和自行车,然后过滤汽车,有效增加执行时间 有没有有效的方法来查询喜欢的关系*关系?Jakub! 有一种方法可以匹配一组关系类型: match (p:Person)-[:LIKES_C|LIKES_B]->(carOrBike) 在这种情况下,您将能够从:Person节点遍历:LIKES_C和:LIKES_B关系 您还可以使用带有关系名称列表

我有这样的理论图形结构:

(:Car)<-[:LIKES_C]-(:Person)-[:LIKES_B]->(:Bike)
它将搜索
汽车
自行车
,然后过滤
汽车
,有效增加执行时间

有没有有效的方法来查询
喜欢的关系*
关系?

Jakub! 有一种方法可以匹配一组关系类型:

match (p:Person)-[:LIKES_C|LIKES_B]->(carOrBike)
在这种情况下,您将能够从
:Person
节点遍历
:LIKES_C
:LIKES_B
关系

您还可以使用带有关系名称列表的
UNWIND
,并结合
apoc.cypher.run
(已描述)一次查询多个关系。

Jakub! 有一种方法可以匹配一组关系类型:

match (p:Person)-[:LIKES_C|LIKES_B]->(carOrBike)
在这种情况下,您将能够从
:Person
节点遍历
:LIKES_C
:LIKES_B
关系


您还可以使用带有关系名称列表的
展开
,并结合
apoc.cypher.run
(已描述)一次查询多个关系。

如果您计划/期望经常执行通用和特定查询,我想知道,除了特定的
:LIKES.*
关系之外,仅仅添加通用的
:LIKES
关系是否是一种方法。一般来说,与查询对齐的图模型不是更有效吗?是的,这似乎也是一个很好的解决方案。但是,我会损失一点时间和空间来创建这些额外的关系,以及大部分的
db.schema
清晰性…如果您计划/期望经常执行通用和特定查询,我想知道,除了特定的
:LIKES.*
关系之外,仅仅添加通用的
:LIKES
关系是否是一种方法。一般来说,与查询对齐的图模型不是更有效吗?是的,这似乎也是一个很好的解决方案。不过,我会损失一点时间和空间来创建这种额外的关系,以及大部分的
db.schema
清晰性…不是吗
[:LIKES_C |:LIKES_B]
?正如我在3.5.3版本上所测试的那样——双向工作。但是如果我们参考文档,您的变体是正确的,非常感谢您的输入,但是我计划使用多个
LIKE*
关系,因此我正在寻找一种更通用的方法。我假设它需要动态创建查询。。。或者我可以使用
UNWIND
作为关系名称吗?关于UNWIND,您可以尝试apoc.cypher.run,不是吗
[:LIKES_C |:LIKES_B]
?正如我在3.5.3版本上所测试的那样——双向工作。但是如果我们参考文档,您的变体是正确的,非常感谢您的输入,但是我计划使用多个
LIKE*
关系,因此我正在寻找一种更通用的方法。我假设它需要动态创建查询。。。或者我可以使用
UNWIND
作为关系名称吗?关于UNWIND,您可以尝试apoc.cypher.run