Neo4j中显示的关系虽然不应该

时间:2017-08-07 08:50:27

标签: neo4j cypher relationships

我创建了一个包含三个节点的小型数据库,Abraham,Isaac和Jacob。亚伯拉罕是以撒的父亲,艾萨克是雅各的父亲。

现在我执行以下查询:

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

从Neo4J Web界面运行查询显示两个节点之间具有FATHER关系: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 个答案:

答案 0 :(得分:0)

这就是Neo4j浏览器可视化的方式,仅此而已。既然你已经拥有了两个节点,Neo4j就拥有它所需的一切(指针)来知道存在关系(并显示它)。如果你以编程方式处理结果(用Java或类似的......因为我认为Neo4j浏览器不会是"生产"结果)你将能够处理结果如你所愿。如果您只对名称而不是实际节点感兴趣,请执行

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

希望这有帮助。

此致 汤姆