Neo4j 为什么这两个密码查询产生不同的结果?
我有以下密码查询(使用Neo4j 2.0): 我认为只有当Neo4j 为什么这两个密码查询产生不同的结果?,neo4j,cypher,Neo4j,Cypher,我有以下密码查询(使用Neo4j 2.0): 我认为只有当c通过一个路径连接到x时,这种情况才会匹配,该路径通过projectclients节点,然后通过project节点,然后通过tasks节点。但是,当应该有0时,此查询匹配4个结果 如果我将查询更改为以下内容: MATCH (c:contact) WHERE c.id = "7VpzLRcMN71" WITH c MATCH (x:task), (p:projectclients) WHERE c-[:CONTACT*1..6]->p
c
通过一个路径连接到x
时,这种情况才会匹配,该路径通过projectclients
节点,然后通过project
节点,然后通过tasks
节点。但是,当应该有0时,此查询匹配4个结果
如果我将查询更改为以下内容:
MATCH (c:contact) WHERE c.id = "7VpzLRcMN71" WITH c
MATCH (x:task), (p:projectclients)
WHERE c-[:CONTACT*1..6]->p-[:CONTACT|SUBPROJECT*1..5]->(:project)-->(:tasks)-->x
RETURN x
它按预期工作,并返回零结果
这两个查询不应该返回相同的结果吗?也许您可以共享您的图形模型和使用查询的示例数据,以及您得到的结果(节点标签和rel类型)?您可能希望将where子句移动到MATCH子句中以加快速度。where语句包含我认为在MATCH中无法实现的或条件(我将其简化为产生错误结果的最小查询)。有什么地方我可以发送我的数据库文件和查询?你可以把它压缩并上传到dropbox,等等。如果它足够小,你也可以通过电子邮件发送给新技术公司的michael。michael,我发送了我的图表和查询,你能查看一下吗?嗨,比尔。。您可以创建数据的图表或粘贴整个路径。。您的查询匹配。。这样可以帮助分析问题。。
MATCH (c:contact) WHERE c.id = "7VpzLRcMN71" WITH c
MATCH (x:task), (p:projectclients)
WHERE c-[:CONTACT*1..6]->p-[:CONTACT|SUBPROJECT*1..5]->(:project)-->(:tasks)-->x
RETURN x