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
Neo4j cypher查询因“不知道如何进行比较”而失败_Neo4j_Cypher - Fatal编程技术网

Neo4j cypher查询因“不知道如何进行比较”而失败

Neo4j cypher查询因“不知道如何进行比较”而失败,neo4j,cypher,Neo4j,Cypher,我有一个运行此查询的简单测试图: MATCH p = (l)-[*1..1]->(start)-[*3..3]->(r) where id(start) = 1101 return l,r 这在Neo4j 2.1中曾经起作用,但升级到2.2后,它不再起作用,出现以下错误: Don't know how to compare that. Left: [:has_participant[1027]{}] ($colon$colon); Right: :sampled[1025]{} (

我有一个运行此查询的简单测试图:

MATCH p = (l)-[*1..1]->(start)-[*3..3]->(r) where id(start) = 1101 return l,r
这在Neo4j 2.1中曾经起作用,但升级到2.2后,它不再起作用,出现以下错误:

Don't know how to compare that. Left: [:has_participant[1027]{}] ($colon$colon); Right: :sampled[1025]{} (RelationshipProxy)
此查询可用于:

MATCH p = (l)-[*1..1]->(start)-[*1..1]->(r) where id(start) = 1101 return l,start,r
MATCH p = (l)-->(start)-[*3..3]->(r) where id(start) = 1101 return l,r
导致这种可视化:

左侧节点为l,John节点为start,绿色节点为r

如果我双击绿色节点,然后双击出现的节点,我可以到达我想要的r节点,这些节点被标记为车道:

此树中的每个级别都使用不同的关系连接;'has_参与者将l连接到start,将start连接到绿色节点“已准备”连接绿色到蓝色,“已排序”连接蓝色到粉色

给定起点,如何在不遇到错误的情况下到达上面显示的l和2个粉红色车道节点?我实际上想做的是给我一个至少3步远的start的子节点,所以我不能使用sampled->prepared->sequenced关系路径的知识

下面是解释问题查询的结果:

此变量在查询中起作用:

MATCH p = (l)-[*1..1]->(start)-[*1..1]->(r) where id(start) = 1101 return l,start,r
MATCH p = (l)-->(start)-[*3..3]->(r) where id(start) = 1101 return l,r
但为什么我最初的查询停止了工作?如果我想在左边做2..2怎么办

编辑:事实上,更奇怪的是这些作品:

MATCH p = (l)-[*0..1]->(start)-[*3..3]->(r) where id(start) = 1101 return l,r
MATCH p = (l)-[*1..2]->(start)-[*3..3]->(r) where id(start) = 1101 return l,r

只有左侧的1..1失败。

您确实不应该使用id函数进行查询-它们可以更改

如果你这样做会发生什么

匹配p=l-[*1..1]>start{name:John}-[*3..3]>r返回l,r


您可能希望在开始节点的标签/属性上放置索引。

我之前运行的查询首先通过索引属性找到John。现在我有一个John节点,我正试图找出它的相关信息,比如它的父节点是什么,它的子节点是什么,三步之遥。在任何情况下,您的版本都会导致相同的错误。有问题的[:has_relationship]和[:sampled]关系位于何处?在[*1..1]或[*3..3]中?你试过把解释放在询问之前吗?您是否尝试过将[*1..1]替换为-?如问题中所述,has_关系位于1..1的左侧,sampled位于右侧,这是..3的第一步。我将把解释的结果添加到问题中。将1..1替换为-it works。我在问题末尾添加了一些额外的命令变体。这是一个1..1不起作用的bug吗?1..1有点奇怪,不是吗?您正在寻找直接连接的节点,具有任何rel类型的rel,并且正确的密码语法始终是-afaik。。。将直接连接的节点表示为路径长度在1和1之间的可变长度路径(即1..1的意思)是没有意义的。这在过去可能是允许的——我不知道。但这样对我来说很有意义。