鉴于当前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
您提供的示例可以在单个模式中重写,如下所示:
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