Создано GraphGist, чтобы объяснить мою проблему:Cypher Query для всех узлов, которые имеют общие отношения с двумя или более под-узлами?
https://gist.github.com/bconneen/e5c66e26883958c81ae6fc5c607fdfa9
Рассмотрим следующую модель Neo4j:
Applicant(firstName, lastName, uniqueId)
Phone(number)
IpAddress(ip)
BankAccount(routing,account)
Applicant--has->Phone,
Applicant--has->IpAddress,
Applicant--has-->BankAccount
Все узлы создаются с помощью слияния. Поэтому, если мы обработаем 100 000 приложений, отношения будут созданы, когда изредка более 1 заявитель делится одним или несколькими телефонами, IpAddress, BankAccount.
Я хочу, чтобы узлы вернулись, когда 2 или более заявителей делят 2 или более Телефон, IpAddress или BankAccount. Я хочу написать запрос, который возвращает All Applicants и их общие отношения. Это соответствует критериям.
Пример:
Заявитель (John Smith) имеет телефон (555-555-5555), имеет Ipaddress (127.0.0.1), имеет BankAccount (ABCDEF)
Заявитель (Jane Doe) имеет Телефон (222-222-2222, имеет ipAddress (127.0.0.1), имеет BankAccount (ABCDEF)
Соискатель (Steve Zahn) имеет телефон (555-555-5555), имеет ipAddress (127.2.2.2), имеет BankAccount (GHJKD)
Кандидат (Джеймс Клэй) имеет Pho пе (444-444-4444), имеет Ipaddress (129.3.3.3), имеет BankAccount (ZYXWVU)
запросов для всех кандидатов, которые разделяют 2 или больше телефон, Ipaddress или банк:
Заявителя (John Смит) имеет телефон (555-555-5555), имеет ipAddress (127.0.0.1), имеет BankAccount (ABCDEF)
Кандидат (Джейн Доу) имеет телефон (222-222-2222, имеет ipAddress (127.0.0.1) , имеет BankAccount (ABCDEF)
Запрос для всех Заявителей, которые имеют 1 или больше Телефон, IpAddress или Банк:
Заявитель (John Smith) имеет телефон (555-555-5555), имеет Ipaddress (127.0.0.1), имеет BankAccount (ABCDEF)
Заявитель (Jane Doe) имеет телефон (222-222-2222 , имеет Ipaddress (127.0.0.1), имеет BankAccount (ABCDEF)
Заявитель (Стив Зан) имеет телефон (555-555-5555), имеет Ipaddress (127.2.2.2), имеет BankAccount (GHJKD)
Спасибо за ответ. Могу ли я спросить купе уточняющих вопросов? A) Что делает эта часть: «WHERE id (претендент)> id (другой)»? B) Если я правильно понимаю, он возвращает только 2 заявителя.Даже если более двух человек используют одну и ту же информацию? – bconneen
Еще раз спасибо за помощь. Я представил Gist здесь: http://portal.graphgist.org/graph_gists/6de21406-ca93-47ff-ab66-526e73ea6c12 – bconneen
исключает дубликаты – Evgen