3

最初のクエリの結果を 2 番目のクエリで使用したいと考えています。Cypherでこれを行う方法がわかりませんか?

現在のコード、

START user1=node:USER_INDEX(USER_INDEX = "userA") 
MATCH user1-[r1:ACCESSED]->docid1<-[r2:ACCESSED]-user2, user2-[r3:ACCESSED]->docid2 
WHERE r2.Topic=r3.Topic 
RETURN distinct docid2.Label;

同じ docid2 ノード セットの WHERE 句でさまざまな条件をチェックして、結果を蓄積し、日付フィールドに基づいて順序付けを実行したいと考えています。同じトランザクション内で複数の一致と返品を提供することはできません。それは、2 つの異なるサイファー スクリプトを用意し、それらを 3 番目のクエリに結合しようとしているときです。これはサイファーで可能ですか?または、カスタム関数を作成して呼び出すオプションはありますか? Stored Gremlin スクリプトのような Cypher スクリプトを保存していますか?

4

1 に答える 1

1

マイケルがコメントで述べたように、「with」ステートメントを使用して、結果をさらにステートメントにストリーミングできます。残念ながら、"where" 句の後に別のステートメントを開始することはできません。複数の return ステートメントは一種の非論理的ですが、1 つのクエリで複数のことを行うことができます。

START x=node:node_auto_index(key="x")
with count(x) as exists
start y=node:node_auto_index(key="y")
where exists = 0
create (n {key:"y"})<-[:rel]-y
return n, y

これにより、「x」ノードが存在するかどうかがチェックされ、存在しない場合は作成に進み、いくつかのパラメーターを追加します。

結果セットでより洗練された処理を行いたい場合、最適なオプションはバッチ リクエストまたは Java API のいずれかです...

于 2013-05-14T14:11:48.853 に答える