2016-03-29 5 views
0

は私の問題を説明するためにGraphGistを作成:Cypher 2つ以上のサブノードとの共有関係を持つすべてのノードをクエリしますか?

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人の応募者がPhone、IpAddress、BankAccountの1つ以上を時々共有する場合があります。

2人以上の応募者がPhone、IpAddress、またはBankAccountを2つ以上共有している場合にノードを返信します。私は、すべての応募者とその共有関係を返す照会を作成したいと思います。それは基準を満たしている。

例:

申請(ジョン・スミス)は電話(555-555-5555)、IPaddressは(127.0.0.1)、銀行口座のは(A​​BCDEF)

申請(ジェーン・ドウが)していた持っているがあります電話番号(222-222-2222、ipAddress(127.0.0.1)、BankAccount(ABCDEF))

申請者(Steve Zahn)は電話番号(555-555-5555)を持っており、ipAddress(127.2.2.2)にはBankAccount (GHJKD)

出願人(James Clay)は、Pho

申請者(ジョン:NE(444-444-4444)、ipAddressの(129.3.3.3)は、銀行口座の(ZYXWVU)

クエリが2以上の電話番号、IPアドレスや銀行を共有するすべての申請のために持っている持っていますスミス)は、電話番号(555-555-5555)、ipAddress(127.0.0.1)、BankAccount(ABCDEF)、

、、、 、

を申請しています(222-222-2222、ipAddress(127.0.0.1) 、BankAccount(ABCDEF)

1つ以上の電話、IPアドレスまたは銀行を共有するすべての応募者の質問:

申請(ジョン・スミス)は電話(555-555-5555)を持っている、持っていipAddressの(127.0.0.1)、銀行口座の(ABCDEF)を持っている

申請(ジェーン・ドー)は電話(222-222-2222 、持っているipAddressは(127.0.0.1)、銀行口座の(ABCDEF)を持っている

申請(スティーヴ・ザーン)は電話(555-555-5555)、ipAddressの(127.2.2.2)、銀行口座の(GHJKD)を持っているが、持っているがあり

答えて

2

あなたの要点のデータを使用する:

その共有TS 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 

enter image description here

+0

は答えをいただき、ありがとうございます。質問を明確にするクーペを頼むことができますか? A)この部分は何を成し遂げますか:「どこのID(応募者)> id(その他)」ですか? B)私が正しく理解していれば、2人の応募者しか返されません。たとえ同じ情報を2つ以上共有していても? – bconneen

+0

もう一度お手伝いをしてくれてありがとう。私はここにGistを投稿しました:http://portal.graphgist.org/graph_gists/6de21406-ca93-47ff-ab66-526e73ea6c12 – bconneen

+1

それは重複を除外します – Evgen

関連する問題