Neo4J查询查找到不同节点的相同数据链接

时间:2016-05-10 00:41:23

标签: neo4j cypher

以下是我在Neo4j中创建的内容:

节点:客户姓名,客户地址和客户联系

根据三者之间的共同关系链接这些节点。

我可以看到在Neo4j中链接的所有三个节点。联系人包含电子邮件和电话号码,因此有些情况下客户名称节点已连接到电子邮件地址,电话号码和地址。

在我的学习曲线中,我被要求显示不同客户名称使用的联系人数量,以及不同客户名称使用的地址数量。根据我的经验,我尝试了一些查询,但无法达到结果。

尝试以下查询 -

start n=node(*)
match n-[:CONTACT_AT]-()
return distinct n

CONTACT_AT是客户名称与联系人(电子邮件,电话)节点之间的关系。

1 个答案:

答案 0 :(得分:1)

您的问题未提供有关您的数据模型的足够信息。为了节省时间,我将假设它看起来像这样(没有显示所有属性):

(a:Address)<-[:ADDRESS_AT]-(p:Person {name: '...'})-[:CONTACT_AT]->(c:Contact)

使用此模型,您就可以获得拥有相同联系人的所有人的姓名:

MATCH (person:Person)-[:CONTACT_AT]->(contact:Contact)
RETURN contact, COLLECT(person.name) AS names;

这就是你如何得到拥有相同地址的人的所有姓名:

MATCH (person:Person)-[:ADDRESS_AT]->(address:Address)
RETURN address, COLLECT(person.name) AS names;