为什么我的密码查询返回null?

时间:2014-07-10 08:10:14

标签: neo4j cypher

我有两个不同标签的结构:

树节点的标签:人

graph nodes'label:Friend

1)树:

a-->b-->d
|   |
|    -->e
|
 -->c-->f
    |
     -->g
    |
     -->h

2)图:

b-->a-->f-->g-->b
    |
     -->b

我有这个密码查询,我期望返回的是:“b”

但它返回null。我该怎么写这个查询????

MATCH (a),(b)
WHERE a.name='ali'
AND (a:Friend)-[:FRIEND_OF]-(b:Friend)
AND (a:Person)-[:PARENT_OF]->(b:Person)
RETURN b.name

1 个答案:

答案 0 :(得分:0)

如果你能解释一下你想要做什么,那将会有很大帮助。我真的不懂。

由于人们之间的关系已经有标签(FRIEND_OFPARENT_OF),为什么要使用Friend节点标签?除非你有充分的理由,否则我只会拥有Person标记的节点。

您发布的查询将返回与Ali成为朋友的人员节点,其中Ali是他/她的父母。它可以改写为:

MATCH (a:Person {name:"ali"})-[:FRIEND_OF]-(b:Person)
WHERE (a)-[:PARENT_OF]->(b)
RETURN b.name

我没有您的数据集,因此很难测试结果。你说你没有得到任何结果。

你能验证一下:

  • 只有一个名称为ali的节点,它有你正在寻找的2个关系?如果有2个名称为ali的节点,并且每个节点都具有上述关系之一,则Neo4j不会找到任何匹配项。您正在寻找具有两种关系的正好一个节点。

  • 节点b存在且具有名称属性?