Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Cypher查询Neo4j中的递归关系链_Neo4j_Cypher_Relationships - Fatal编程技术网

用Cypher查询Neo4j中的递归关系链

用Cypher查询Neo4j中的递归关系链,neo4j,cypher,relationships,Neo4j,Cypher,Relationships,我有一个图形数据库,它正在为消息的元数据以及这些消息中可以包含的字段建模。其中一些字段可以是“组”,也就是其他字段的组。我想问Neo的是“有什么消息在使用这个组?”。以下是可用于从邮件获取到组的路径类型列表: message-[:INLINE]->group (the fields of a group are used inline on a message) message-[:FIELDREF]->(fref)-[:FIELD]->(field)-[:DATATYPE]

我有一个图形数据库,它正在为消息的元数据以及这些消息中可以包含的字段建模。其中一些字段可以是“组”,也就是其他字段的组。我想问Neo的是“有什么消息在使用这个组?”。以下是可用于从邮件获取到组的路径类型列表:

message-[:INLINE]->group  (the fields of a group are used inline on a message)
message-[:FIELDREF]->(fref)-[:FIELD]->(field)-[:DATATYPE]->group (the group is used as a data type by a field on the message)
第二个链是递归的。换句话说,-[:FIELDREF]->(fref)-[:FIELD]->(FIELD)-[:DATATYPE]-(group)段可以在最终到达我感兴趣的组之前反复出现

所以,我想知道的是,我如何在路径中的每个元素上请求一个重复的关系链,而不仅仅是一个倍数(例如关系名称后面的*)

综上所述,您可以通过遍历[:INLINE]关系从消息中访问组,该关系可以跟随n个“fieldref field datatype group”链。。或者,您可以通过遍历n个“fieldref field datatype group”链从消息中访问组

所以我想要类似于[?:INLINE]>0..n的(fieldref-field-datatype-group)链


有什么想法吗?

根据密码参考

12.2.13。可变长度关系 是数量可变的关系的节点→可以使用以下语法找到节点跳转:-[:TYPE*minHops..maxHops]->。最小跳数和最大跳数是可选的,默认分别为1和无穷大。当没有给出边界时,可以省略点

下面是我认为你寻求的一个例子。我把最低限度定为2

start n=node:node_auto_index(name='Neo') match n-[r:KNOWS*2..]-m return n as Neo,r,m

您可以在

上逐字测试此查询是的,我知道星号。实际上,当我告诉Neo我想要“从一条消息到一个组的任何长度的任何路径”时,我试图过于复杂,描述一个精确的形状,就像这样:msg-[?:INLINE | FIELDREF | FIELD | DATATYPE*]->n
start n=node:node_auto_index(name='Neo') match n-[r:KNOWS*2..]-m return n as Neo,r,m