3

暗号クエリを設計するのに少し苦労しています。

を使用して、時間内にいくつかのデータを記録するグラフデータ構造があります

(starting_node)-[:last]->(data1)-[:previous]->(data2)-[:previous]->(data3)->...

各データノードには日付と、合計したい属性としてのデータがあります。

ここで、例として、先週何が起こったかを照会したいとします。私が近づいたのは、次のようなクエリを実行することです

start n= ... // definition of the many starting nodes here
match n-[:last]->d1, path = d1-[:previous*0..7]->dn
where dn.date > some_date_a_week_ago

残念ながら、正しいパスを取得すると、すべての中間パス (2 日前から、3 日前からなど) も取得されます。

開始ノードが多数あり、可能なパスの長さが多数あるため、クエリで最長パスを求めることはできません。さらに、(今週はデータ ノードが 1 つしかなく、先月はデータ ノードが 1 つしかない場合、予想されるパスの長さは 1 になります) とはdn.date異なる場合があります。date_a_week_ago

クエリで中間パスをフィルタリングする方法に関するヒントはありますか?

前もって感謝します !

ps : ところで、私はグラフ モデリングにまったく慣れていないので、必要に応じてグラフ構造を変更する必要がある回答に興味があります。

4

1 に答える 1

3

パスにさらにポイント「dnext」を追加し、「dn」が条件を満たす最後のポイントであることを確認する条件を追加できます。

start n= ... // definition of the many starting nodes here
match n-[:last]->d1, path = d1-[:previous*0..7]->dn-[:previous*0..1]->dnnext
where dn.date > some_date_a_week_ago and dnnext < some_date_a_week
于 2013-08-23T14:18:20.137 に答える