首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Neo4J v2.0.3.路径请求返回“未知错误”

Neo4J v2.0.3.路径请求返回“未知错误”
EN

Stack Overflow用户
提问于 2014-05-21 12:23:08
回答 2查看 160关注 0票数 1

Neo4j v2.0.3.

在具有~30000节点的图中,当试图获取具有命令的节点的路径时:

代码语言:javascript
复制
MATCH p = (n {id: 'x2116500'})-[*]-(m) RETURN nodes(p) as nodes;

Cypher Web应用程序返回“未知错误”。但是,在一个有15个节点的数据库上,这个请求可以像预期的那样工作!

但请求:

代码语言:javascript
复制
MATCH p = (n {id: 'x2116500'})-[r]-(m) RETURN nodes(p) as nodes

返回一些节点,但并不是路径中的所有节点。同样的错误也发生在从路径获取关系的类似请求中,这个错误失败了:

代码语言:javascript
复制
MATCH p = (n {id: 'x2116500'})-[*]-(m) RETURN relationships(p) as rels ;

这会返回一些关系,但是并不是路径中的所有关系。

代码语言:javascript
复制
MATCH p = (n {id: 'x2116500'})-[r]-(m) RETURN relationships(p) as rels ;
EN

Stack Overflow用户

回答已采纳

发布于 2014-05-21 16:53:29

[r]语法(没有星号)意味着您只希望在每个匹配的路径中只有一个关系,因此使用[r]的2个备用查询不应该返回所有关系(在多关系路径中)。因此,这两个查询正在按预期工作。

至于使用[*]的查询,请确保路径中没有循环。下面是一个循环路径的示例:

代码语言:javascript
复制
(a)-[r1]->(b)-[r2]->(c)-[r3]->(d)-[r4]->(c)

上述路径有3个非循环关系。如果您不期望任何非循环路径具有多于4种关系,则可以使用以下查询来获取该路径中的不同节点,即使周期是可能的:

代码语言:javascript
复制
MATCH p = ({id: 'x2116500'})-[r*1..4]-()
RETURN DISTINCT nodes(p) as nodes;

这个查询也更有可能完成(而不是永远运行或内存耗尽)。

此外,为了使查询更快,您应该标记开始节点,并使用该标签和id属性创建索引。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23783054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档