Возможно ли в настоящее время выполнять запросы на совпадение пересечений в redis-graph?

#redisgraph

#redisgraph

Вопрос:

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

Например, что-то эквивалентное следующему шифровальному скрипту, который возвращал бы страны, которые посетили как Мор Йешарим, так и Ноам Натив:

 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:

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

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

Однако это не подходит для более сложных шаблонов (например, если in-степень для 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