2017-08-07 28 views
1

我创建了一个包含三个节点的小型数据库:Abraham,Isaac和Jacob。亚伯拉罕是以撒的父亲,以撒是雅各的父亲。Neo4j中显示的关系虽然不应该

现在我执行以下查询:

MATCH (a:Person), (i:Person) 
WHERE a.name='Abraham' and i.name='Isaac' 
RETURN a, i 

运行从Neo4j的Web界面查询显示他们之间的父亲的关系的两个节点:result shown in the Neo4J web interface

这很奇怪,因为我没有要求任何关系。 JSON响应不包含以下关系:

[{ 
    "keys": [ 
     "a", 
     "i" 
    ], 
    "length": 2, 
    "_fields": [ 
     { 
      "identity": { 
       "low": 0, 
       "high": 0 
      }, 
      "labels": [ 
       "Person" 
      ], 
      "properties": { 
       "name": "Abraham" 
      } 
     }, 
     { 
      "identity": { 
       "low": 1, 
       "high": 0 
      }, 
      "labels": [ 
       "Person" 
      ], 
      "properties": { 
       "name": "Isaac" 
      } 
     } 
    ], 
    "_fieldLookup": { 
     "a": 0, 
     "i": 1 
    } 
}] 

为什么Neo4J显示这种关系?我该如何让它停止?我试图创建一个查询,返回一组节点之间的各种关系,我真的不希望Neo4J干扰并添加自己的关系。

+1

这是我用过的'relationships'标签中的第一次。从来没有想过我会要求关于Stack Overflow的关系建议... – zmbq

+1

相关https://stackoverflow.com/questions/37603618/how-to-hide-unwanted-relationships-between-nodes-in-neo4j/45121705#45121705 –

+0

这没有关系,它是重复的。我已经投票结束(原来我不能真正关闭我自己的问题......) – zmbq

回答

0

它只是Neo4j浏览器可视化的方式,仅此而已。既然你有两个节点,Neo4j就拥有它需要的一切(指针)来知道它们之间存在关系(并显示它)。如果你以编程方式处理结果(使用Java或其他...因为我认为Neo4j浏览器不会是“生产”结果),您将能够按照您的意愿处理结果。如果你只对名称感兴趣而不是实际的节点,只要做

MATCH (a:Person), (i:Person) 
WHERE a.name='Abraham' and i.name='Isaac' 
RETURN a.name, i.name 

希望这会有所帮助。

问候, 汤姆