目前是否可以在 redis-graph 中进行匹配交集查询?

Is it currently possible to do match intersection queries in redis-graph?

鉴于当前的 Cypher 限制,目前是否可以在 RedisGraph 中查询匹配交集?

例如,相当于以下 Cypher 脚本的东西 return Mor Yesharim 和 Noam Nativ 都访问过的国家:

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

您提供的示例可以用单一模式重写,如下所示:

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

然而,这对于更复杂的模式不可行(例如,如果 Country 的入度大于 2)。在这些情况下,您可以结合使用 WITH 和 ID 匹配:

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