Neo4j 用于检索索引关系和联接节点的密码查询
我试图检索未删除的关系,以及它们的源节点和目标节点 我想这很容易:Neo4j 用于检索索引关系和联接节点的密码查询,neo4j,cypher,Neo4j,Cypher,我试图检索未删除的关系,以及它们的源节点和目标节点 我想这很容易: START relationship=relationship:relationship_auto_index(deleted="false") MATCH (source)-[relationship]->(target) RETURN relationship, source, target; 但这将返回9600行 鉴于: START relationship = relationship:relationshi
START relationship=relationship:relationship_auto_index(deleted="false")
MATCH (source)-[relationship]->(target)
RETURN relationship, source, target;
但这将返回9600行
鉴于:
START relationship = relationship:relationship_auto_index(deleted="false")
RETURN relationship;
返回30行
我期待着一对一的比赛,但很明显我做错了什么。有人能告诉我什么吗?奇怪的是,这得到了我想要的:
START source=node(*)
MATCH source-[relationship]->target
WHERE relationship.deleted = "false"
RETURN source, relationship, target;
它似乎效率较低。任何人都能提供任何见解,我们将不胜感激。两者返回的内容有什么不同 如果我没记错的话,你不能在cypher中进行这样的查询,至少在1.8.2和1.9两个版本中,我似乎也失败了 我认为您的查询实际上是对所有节点进行完整扫描,并返回所有对。我成立了一个公司。如果单击“查看结果”并查看解释计划,您将看到它在做一些奇怪的事情。您可能想向Neo4j提出一个bug问题 试着这样做:
START r=relationship(0)
MATCH p=a-[r]->b
RETURN Distinct(p)
在第一个查询返回子句中尝试使用distinct。发生了什么?下面是我尝试做的另一个例子:。我想获取特定关系的源节点和目标节点。出于某种原因,我两次得到相同的结果,只是顺序相反。这是因为关系本身不是定向的,所以从技术上讲,它们都是相互关联的?另外,如果要扫描所有节点,那么能够对关系进行索引又有什么意义呢?那么,在您的示例数据库中,你能解释一下我将如何获得“已知”关系以及源节点和目标节点吗?我同意你关于关系索引的评论。但我认为这可能只是一个密码问题。如果我使用本机javaapi或Gremlin,我可以得到您想要的。另一种选择是在路径上使用distinct。您是否尝试过更新到Neo4j 1.9或2.0-M03?这可能是1.8.2之后修复的错误。