Neo4j 是否对与2个或更多子节点具有共享关系的所有节点进行密码查询?

Neo4j 是否对与2个或更多子节点具有共享关系的所有节点进行密码查询?,neo4j,cypher,Neo4j,Cypher,创建了一个图表列表来帮助解释我的问题: 考虑以下Neo4J模型: Applicant(firstName, lastName, uniqueId) Phone(number) IpAddress(ip) BankAccount(routing,account) Applicant--has->Phone, Applicant--has->IpAddress, Applicant--has-->BankAccount 所有节点都是使用“合并”创建的。因此,如果我们处理100

创建了一个图表列表来帮助解释我的问题:

考虑以下Neo4J模型:

Applicant(firstName, lastName, uniqueId)
Phone(number)
IpAddress(ip)
BankAccount(routing,account)

Applicant--has->Phone,
Applicant--has->IpAddress,
Applicant--has-->BankAccount
所有节点都是使用“合并”创建的。因此,如果我们处理100000份申请,将创建一个或多个关系,其中偶尔会有多个申请者共享一个或多个电话、IpAddress、BankAccount

我希望当两个或多个申请者共享两个或多个电话、IP地址或银行帐户时返回节点。我想写一个查询,返回所有申请者及其共享关系。符合标准的

示例:

Applicant(firstName, lastName, uniqueId)
Phone(number)
IpAddress(ip)
BankAccount(routing,account)

Applicant--has->Phone,
Applicant--has->IpAddress,
Applicant--has-->BankAccount
申请人(John Smith)有电话(555-555-5555)、IP地址(127.0.0.1)、银行账户(ABCDEF)

申请人(Jane Doe)有电话(222-222-2222)、IP地址(127.0.0.1)、银行账户(ABCDEF)

申请人(Steve Zahn)有电话(555-555-5555)、IP地址(127.2.2.2)、银行账户(GHJKD)

申请人(James Clay)有电话(444-444-4444)、IP地址(129.3.3.3)、银行账户(ZYXWVU)

查询共享2个或更多电话、IP地址或银行的所有申请者:

Applicant(firstName, lastName, uniqueId)
Phone(number)
IpAddress(ip)
BankAccount(routing,account)

Applicant--has->Phone,
Applicant--has->IpAddress,
Applicant--has-->BankAccount
申请人(John Smith)有电话(555-555-5555)、IP地址(127.0.0.1)、银行账户(ABCDEF)

申请人(Jane Doe)有电话(222-222-2222)、IP地址(127.0.0.1)、银行账户(ABCDEF)

查询共享一个或多个电话、IP地址或银行的所有申请者:

Applicant(firstName, lastName, uniqueId)
Phone(number)
IpAddress(ip)
BankAccount(routing,account)

Applicant--has->Phone,
Applicant--has->IpAddress,
Applicant--has-->BankAccount
申请人(John Smith)有电话(555-555-5555)、IP地址(127.0.0.1)、银行账户(ABCDEF)

申请人(Jane Doe)有电话(222-222-2222)、IP地址(127.0.0.1)、银行账户(ABCDEF)


申请人(Steve Zahn)有电话(555-555-5555)、IP地址(127.2.2.2)、银行账户(GHJKD)

使用gist中的数据:

查询共享2个或2个以上电话、IP地址或银行的所有申请者

MATCH (applicant:Applicant)-[r]->(subelement)<-[r2]-(other:Applicant)
WITH applicant, other, collect(subelement) AS overlap 
WHERE id(applicant) > id(other) AND size(overlap) > 1
RETURN applicant, other, overlap
匹配(申请人:申请人)-[r]->(子元素)id(其他)和大小(重叠)>1
返回申请人,其他,重叠

使用gist中的数据:

查询共享2个或2个以上电话、IP地址或银行的所有申请者

MATCH (applicant:Applicant)-[r]->(subelement)<-[r2]-(other:Applicant)
WITH applicant, other, collect(subelement) AS overlap 
WHERE id(applicant) > id(other) AND size(overlap) > 1
RETURN applicant, other, overlap
匹配(申请人:申请人)-[r]->(子元素)id(其他)和大小(重叠)>1
返回申请人,其他,重叠

谢谢你的回答。我能问几个澄清问题吗?a)这部分有什么作用:“身份证(申请人)>身份证(其他)”?B)如果我理解正确,它只会返回两个申请者。即使有两个以上的人共享相同的信息?再次感谢您的帮助。我在这里提交了要点:它排除了重复项谢谢您的回答。我可以问一些澄清问题吗?a)这部分完成了什么:“何处id(申请者)>id(其他)”?B) 如果我理解正确,它只返回2个申请者。即使有两个以上的人共享相同的信息?再次感谢您的帮助。我在这里提交了要点:它不包括重复项