麻烦帮忙看看能否用nGQL实现带时序的资金链路查询?

图数据,包含账户点account,属性为accountNo(账号);边为交易明细trade,包含属性交易时间(tradeTime),交易金额(tradeAmount).
需求是根据一条交易明细数据,查找5跳内的交易资金链路,并且判断是否存在环路(如果存在环路就标记为风险账户).还需要满足后一跳的资金明细交易时间要大于前一跳的资金明细交易时间.
不知道这样的需求能否通过nGQL语句实现?

MATCH (start:account {accountNo: $inputAccount})
MATCH path=(start)-[e:trade*1…5]->()
WHERE all(i IN range(1, size(e)-1) WHERE e[i].tradeTime > e[i-1].tradeTime)
WITH start,
path,
// 检测路径中是否存在重复节点(环路)
size(nodes(path)) <> size(apoc.coll.toSet(nodes(path))) AS hasLoop
WHERE hasLoop
RETURN start.accountNo AS accountNo,
‘风险账户’ AS riskStatus
LIMIT 1

Power By deepseek-R1

我在控制台测试了一下,加上谓词all函数之后,简单的判断金额大于0也查不出数据,去掉all函数能查出来数据.两个查询语句如下:
1.MATCH p = allShortestPaths((a)-[e:zjmx*]-(b)) WHERE id(a) == ‘2BBE92FEC73208A3E063D00CC70AE4C9’ and id(b) == ‘2BBE92FEC73208A3E063D00CC70AE4C9’ RETURN p;
2.MATCH p = allShortestPaths((a)-[e:zjmx*]-(b)) WHERE id(a) == ‘2BBE92FEC73208A3E063D00CC70AE4C9’ and id(b) == ‘2BBE92FEC73208A3E063D00CC70AE4C9’ and all(i IN range(1, size(e)-1) WHERE e[i].jyje > 0) RETURN p;

都是没结果,好像跟allShortestPaths函数有关,去掉之后可以筛选,但是有个别的问题,我使用如下查询语句,不一会儿服务器内存就爆了,请问这正常么?50万的边数据,7万的点数据:
MATCH p = (a)-[e:zjmx*1…5]->() WHERE id(a) == ‘2BBE92FEC73208A3E063D00CC70AE4C9’ and ALL(e_ in e WHERE e_.jysj > “1665404439” and e_.jysj < “1705404439”) RETURN p;

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。