Возможно ли в настоящее время сделать запросы на совпадение пересечений в redis-графе? - PullRequest
1 голос
/ 09 марта 2019

Возможно ли в настоящее время выполнить запрос в RedisGraph для пересечений совпадений с учетом текущих ограничений Cypher?

Например, что-то эквивалентное следующему сценарию Cypher, который будет возвращать страны, которые посетили и Mor Yesharim, и NoamНатив:

MATCH (p:Person)-[x:VISITED]->(c:Country)
WHERE p.name = 'Mor Yesharim' OR p.name = 'Noam Nativ'
WITH c, count(DISTINCT p) as cnt
WHERE cnt = 2
RETURN c

1 Ответ

3 голосов
/ 13 марта 2019

Ваш предоставленный пример может быть переписан в одном шаблоне, например так:

MATCH (p:Person)-[:VISITED]->(c:Country)<-[:VISITED]-(q:person)
WHERE p.name = 'Mor Yesharim' AND q.name = 'Noam Nativ'
RETURN c

Однако это не подходит для более сложных шаблонов (если степень в Country была большечем 2, например).В этих случаях вы можете комбинировать WITH и сопоставление идентификаторов:

MATCH (p:Person)-[:VISITED]->(c:Country)
WHERE p.name = 'Mor Yesharim' WITH c AS first
MATCH (q:Person)-[:VISITED]->(d:Country)
WHERE q.name = 'Noam Nativ'
AND ID(first) = ID(d)
RETURN d
...