1

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

例如,与以下 Cypher 脚本等效的内容将返回 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
4

1 回答 1

3

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

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

然而,这对于更复杂的模式是不可行的(Country例如,如果 in-degree 大于 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
于 2019-03-12T22:33:04.870 回答