我是Cypher的新手,我无法解决一个简单的问题。如果有人可以帮助我,我会非常感激。
我有这个结构:
MATCH (p:person)-[k:KNOWS]->(pl:ProgrammingLangage)
因此,例如,对知道java的人的简单查询是:
MATCH (p:person)-[k:KNOWS]->(pl:ProgrammingLangage)
WHERE pl.name = "java" and k.years > 2
RETURN p.name as PERSON, k.years as YEARS, pl.name as PROGRAMMING_LANGAGE
我需要知道知道 java 和 php 的人至少2年。
我尝试UNION
,尝试WHERE ALL
,IN
,没有任何效果。
答案 0 :(得分:1)
可能不是最有效或最漂亮的,但这就是诀窍:
MATCH (p:Person)-[k:KNOWS]->(pl:ProgrammingLanguage)
WHERE k.years > 2
WITH p.name AS PERSON, collect(pl.name) AS PROGRAMMING_LANGUAGE
WHERE "Java" IN PROGRAMMING_LANGUAGE
AND "PHP" IN PROGRAMMING_LANGUAGE
RETURN PERSON, PROGRAMMING_LANGUAGE
如果您需要对多种语言进行分组,您可以在结果中保留多年(因为这是特定于每种语言)。请注意,结果还将显示该人知道两年以上的任何其他语言(Java和PHP是必需的)。
希望这有帮助,
此致 汤姆