我使用我制作的Neo4j数据库(版本2.1.0-M01)得到了一些奇怪的结果。我有一个具有以下关系的图表:
Node[211854]{name : "dst"} <-[:hasrel]- Node[211823]{name : "src"}
我使用以下查询确认了这种关系:
START m=node(211854) MATCH (m)<-[r]-(n) RETURN m,r,n;
返回一行结果,如预期的那样:
| m | r | n
| Node[211854] | :hasrel[225081] | Node[211823]
以下查询不返回任何内容,但是:
START n=node(211823) MATCH (m)<-[r]-(n) RETURN m,r,n
对可能发生的事情的任何想法?我在节点的名称属性上使用和不使用索引运行这些查询。
编辑:修正了初始节点编号错误。 EDIT2:我重建了服务器,两个查询都返回了我期望的结果。也许错误是第一个数据库中的损坏?
答案 0 :(得分:0)
使用节点ID并不是一个好主意,您可以使用节点上的属性来查询它们。
例如:
MATCH (m)<-[r]-(n {name: "src"}) RETURN m,r,n;
该查询是否会返回您的预期?
答案 1 :(得分:0)
你必须颠倒关系方向。当您正在寻找节点211823的传入关系时,这不是其中之一。这是一种外向关系。
请同时将您的数据库更新为当前版本:2.1.2 http://neo4j.org/download
START n=node(211823) MATCH (m)-[r]->(n) RETURN m,r,n
也许您应该为您的节点和关系提供更具描述性的名称,这样当您颠倒域概念时,您会发现更容易。