我的用例是我在组织结构中有一些代理。我想为某个代理(我可以)选择以查看该代理下属(及其下属的下属等...)与按合同类别分组的客户创建的所有合同的总和(金额)。
问题是 Redis Graph目前不支持 all
谓词。但是我需要过滤代理之间的关系,因为我们有多个具有不同组织结构的“模块”,而我当时只需要一个模块的报告。
我当前的密码查询是:
MATCH path = (:agent {id: 482})<-[:supervised *]-(b:agent)
WHERE all(rel IN relationships(path) WHERE
rel.module_id = 1
AND rel.valid_from < '2020-05-29'
AND '2020-05-29' < rel.valid_to)
WITH b as mediators
MATCH (mediators)-[:mediated]->(c:contract)
RETURN
c.category as category,
count(c) as contract_count,
sum(c.sum) as sum
ORDER BY sum DESC, category
此查询在 Neo4j 中有效。
我不知道此查询是否针对我想要的结果类型正确编写。
由于性能原因,我的老板真的很想使用 Redis Graph 而不是 Neo4j,但我找不到任何方法来重写此查询以使其在 Redis 图中起作用。甚至可能吗?
编辑 1:有人告诉我,我们将仅对当前有效数据和一个模块使用图形,因此我不再需要功能all
谓词,但我仍然对答案感兴趣。