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 天前......等等)。

由于有很多起始节点,因此有很多可能的路径长度,我不能在我的查询中要求最长的路径。此外,dn.date可以不同于date_a_week_ago(如果本周只有一个数据节点,而上个月只有一个数据节点,则预期路径的长度=1)。

关于如何过滤查询中的中间路径的任何提示?

提前致谢 !

ps:顺便说一句,我对图形建模很陌生,如果需要,我会对任何需要更改图形结构的答案感兴趣。

4

1 回答 1

3

您可以在路径中再添加一个点“dnnext”,并添加一个条件以确保“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 回答