Мой вариант использования состоит в том, что у меня есть несколько агентов в организационной структуре. Я хочу выбрать для какого-нибудь агента ( могу я ), чтобы увидеть сумму ( сумма денег ) всех контрактов, которые подчиненные агенты ( и подчиненные) их подчиненных и так далее ... ), созданных с клиентами, сгруппированными по категориям контрактов.
Проблема в том, что Redis Graph в настоящее время не поддерживает предикат all
. Но мне нужно фильтровать отношения между агентами, потому что у нас есть несколько «модулей» с разными организационными структурами, и мне нужен отчет только по одному модулю за раз.
Мой текущий запрос Cypher:
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. Возможно ли это вообще?
Edit 1: Мне сказали, что мы будем использовать график только для текущих достоверных данных и только для одного модуля, поэтому мне больше не нужен функциональный предикат all
, но Я все еще интересуюсь ответом.