如何获得起始节点和结束节点之间的关系?

时间:2015-09-18 13:28:16

标签: graph neo4j

我正在努力寻找家庭关系。

例如,我想知道我和父亲的妻子之间的关系是什么?它应该归还母亲。

我和母亲的女儿之间有什么关系?它应该归还姐姐。

这就是我的图表。有8个关系和2个标签(男性或女性)。

My graph

如何在不指定任何节点的情况下实现此目的?例如,如果我想知道我和我父亲的女儿之间的关系。

我想做MATCH () -[:Father]->()-[:Daughter]->()之类的事情以及开始和结束节点之间的关系。

我确定这个查询绝对错误,但我希望你知道我在这里想要实现的目标。

1 个答案:

答案 0 :(得分:5)

所以,

首先 - 你应该总是指定一些节点。

让我们创建一些数据:

CREATE (me:Person)
CREATE (mother:Person)
CREATE (daughter:Person)
CREATE (me)-[:Son]->(mother)
CREATE (me)<-[:Mother]-(mother)
CREATE (me)-[:Brother]->(daughter)
CREATE (me)<-[:Sister]-(daughter)
CREATE (mother)-[:Mother]->(daughter)
CREATE (mother)<-[:Daughter]-(daughter)

data

  

我和我母亲的女儿之间的关系是什么?它应该归还姐姐。

现在我们可以找到你问题的答案:

MATCH (me)<-[:Mother]-()<-[:Daughter]-(she)
MATCH (me)<-[r]-(she)
RETURN type(r)

结果:

Sister

我们做了什么:

  • 第一场比赛:指定首发路径
  • 第二场比赛:寻求理想的路径
  • 返回:获取路径结果
  

例如,我想知道我和父亲的妻子之间的关系是什么?它应该归还母亲。

这样的事情应该有效:

MATCH (me)<-[:Father]-()<-[:Wife]-(she)
MATCH (me)<-[r]-(she)
RETURN type(r)

结果:

Mother