次の2つのクエリを実行していますが、結果が得られています。
最初のクエリ
START
person=node:NODE_TYPE(NODE_TYPE='PERSON')
MATCH
(person)-[?:contacts]->(var1)-[?:addresses]->(var2)-[?:details]->(var3)-[?:items]->(var4)-[?:items]->(var5)-[?:value]->(var6)
WHERE
var2.`#nodeId` ='at0000' and var3.`#nodeId` ='at0001' and var4.`#nodeId` ='at0002' and var5.`#nodeId` ='at0028' and var6.`value` =~'address.*'
return distinct person;
2 番目のクエリ
START
person=node:NODE_TYPE(NODE_TYPE='PERSON')
MATCH
(person)-[?:contacts]->(var1)-[?:addresses]->(var2)-[?:details]->(var3)-[?:items]->(var4)-[?:value]->(var5)
WHERE
var2.`#nodeId` ='at0000' and var3.`#nodeId` ='at0001' and var4.`#nodeId` ='at0009' and var5.`value` =~'india.*'
return distinct person;
しかし、これらの両方の条件に一致する人物を取得するために 2 つのクエリを 1 つのクエリに結合すると、うまくいきません。
結合されたクエリは
START
person=node:NODE_TYPE(NODE_TYPE='PERSON')
MATCH
(person)-[?:contacts]->(var1)-[?:addresses]->(var2)-[?:details]->(var3)-[?:items]->(var4)-[?:items]->(var5)-[?:value]->(var6) , (person)-[?:contacts]->(var7)-[?:addresses]->(var8)-[?:details]->(var9)-[?:items]->(var10)-[?:value]->(var11)
WHERE
var2.`#nodeId` ='at0000' and var3.`#nodeId` ='at0001' and var4.`#nodeId` ='at0002' and var5.`#nodeId` ='at0028' and var6.`value` =~'address.*' and
var8.`#nodeId` ='at0000' and var9.`#nodeId` ='at0001' and var10.`#nodeId` ='at0009' and var11.`value` =~'india.*'
return distinct person;
このクエリは、空の反復子を返します。
「コンマ」を使用して MATCH 条件を結合し、「and」を使用して WHERE 条件を結合しました。これに問題はありますか?
(暗号クエリを構築するためにクエリビルダーを実装しています。複数の条件の一致をチェックする必要があります。これを行う最良の方法は何ですか?)
Neo4j 1.9M04