パスクエリの経験はあまりありませんがCypher
、パスは私が望むことを効率的に行うための合理的な方法のようです...
私の には、次の関連する関係がありますNeo4j
。
p1-[r:SNEAK]->otherProfile
p1-[r:FRIEND]-otherProfile (the direction not relevant)
p1-[r:HANG]->venue<-[r:HANG]-otherProfile
p1-[r:INTERACT]->session<-[r:INTERACT]-otherProfile
p1-[r:INTERACT]->session<-[r:LIKE]-otherProfile
p1を手に持っているとしましょう。クエリを実行して、次の条件のうち少なくとも 1 つが存在するすべてのプロファイルを取得したいと考えています (プロファイルに個別のものがあります)。
- p1 こっそりと
- || p1 は (友達) です || (友達の友達)
- p1 少なくとも 1 つの会場をハングアップする
- p1 には彼らとのセッションがあります
- p1にはセッションがあり、彼らはそれを気に入りました
また、これらのプロファイル間の関係を把握するために、関係タイプを抽出する機能も必要です...
- これらがDBのすべての関係タイプであると仮定しましょう
最初は、以下のすべてのパスを取得するだけで簡単に思えます。
p=p1-[r*1..2]-profile
それに関するいくつかの問題:
1) p1 に忍び込んだプロファイルも返し
ます 2) p1の友人の 1 人が忍び込んだプロファイルも返します 3) p1に忍び込んだ
プロファイルの友人であるプロファイルも返します
Cypher
私のユースケースの仕事をする1つのクエリを実行することは可能ですか?