Neo4j Cypher替代路径

fgiacc

我正在使用Cypher,我需要构建如下查询

(A) ----e1----(B)
   \           |
     \         |
       e3      e2
         \     |
           \   |
             (C)

其中A,B和C是节点,e1,e2和e3关系分别连接A和B,B和C以及A​​和C。

我感兴趣的是节点A和C。当e1,B和e2存在(并尊重某些属性)或关系e3存在(并尊重某些属性)或两者同时存在时,此模式应该匹配。我的问题是我无法将其转换为Cypher语言。为了给关系提供标识符,我需要在MATCH子句中指定它,例如

MATCH (A)--[e1]--(B)--[e2]--(C), (A)--[e3]--(C)

但是这样做是要告诉Neo4j我同时希望(e1和e3)和e2同时存在,事实并非如此。但是,如果我不为这些关系提供某些标识符,则无法搜索它们的任何属性。

如何建立这个查询?

谢谢。

赛博

这是一个查询,该查询应以您陈述的一种或两种方式在每行中返回一个不同的A和与其连接的所有不同C节点的集合。

我认为ABC全节点的标签。

为了清楚地展示该方法,这是一个简化的查询,它不查看属性值

MATCH p=(a:A)-[e*1..2]-(c:C)
WITH p, a, c, RELATIONSHIPS(p) AS rels
WHERE LENGTH(rels) = 1 OR HEAD(TAIL(NODES(p))):B
RETURN a, COLLECT(DISTINCT c) AS cs

为了对属性值执行测试,您需要修改WHERE子句中的两项(位于的任一侧OR)。我希望这很清楚。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

neo4j cypher避免重复路径

来自分类Dev

Neo4j cypher查询已知路径

来自分类Dev

Neo4j遍历API与Cypher

来自分类Dev

Cypher / neo4j:太多邻居

来自分类Dev

Neo4J Cypher Pattern语法

来自分类Dev

neo4j cypher嵌套收集

来自分类Dev

neo4j Cypher IF THEN ELSE

来自分类Dev

Neo4J和Cypher查询

来自分类Dev

Neo4J / Cypher查询协助

来自分类Dev

Neo4J Cypher获得组合

来自分类Dev

Neo4j Cypher查询错误

来自分类Dev

Cypher Neo4j 查询优化

来自分类Dev

Neo4j替代HTTP

来自分类Dev

Neo4j中的定向路径

来自分类Dev

Neo4j:最佳路径搜索

来自分类Dev

Neo4J Cypher-查找两条路径的交汇点

来自分类Dev

Neo4j Cypher:为什么0长度路径不匹配?

来自分类Dev

在多个MATCH UNION查询中重用路径cypher neo4j

来自分类Dev

Neo4j cypher-搜索节点之间没有路径的节点

来自分类Dev

Neo4J / Cypher:是否可以在where子句中过滤路径的长度?

来自分类Dev

Neo4j Cypher遍历-通过多种关系类型查找路径

来自分类Dev

寻求Neo4J Cypher查询长但(几乎)唯一的路径

来自分类Dev

从Neo4j Cypher allShortestPaths()中排除包含给定节点或给定关系的路径

来自分类Dev

使用Cypher在Neo4j中找到具有图案的最大路径

来自分类Dev

Neo4J(Cypher)查询以查找不遵循模式的所有路径

来自分类Dev

neo4j Cypher-遍历可变长度路径,但在找到标签时停止

来自分类Dev

如何在Neo4J Cypher查询中仅从路径中检索节点?

来自分类Dev

C#:执行neo4j Cypher查询,该查询的Where子句中包含路径

来自分类Dev

使用可变长度路径时Neo4J Cypher抓取关系的类型