简单的倍数查询AND

时间:2017-08-06 17:08:12

标签: neo4j cypher

我是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 ALLIN,没有任何效果。

1 个答案:

答案 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是必需的)。

希望这有帮助,

此致 汤姆