我需要一个密码查询来搜索这样的内容:
我有图(a) - [r] - >(b)和(a) - [r] - >(c)是a是人,b和c是2个不同的技能节点。 让我们假设我正在寻找知道java和fortran的人。 假设b具有属性名称:“java”并且c具有属性名称:“fortran”。 如何找到具有所有指定技能节点的人?
如果查询是可扩展的,那将是有用的,即如果我有20个技能节点,那么执行它也会很容易。
提前多多感谢!
答案 0 :(得分:3)
一种方法是MATCH
Person
个Skill
节点到Skill
个节点,为您的属性过滤Person
个节点,并计算每Person
个节点的数量。如果它与您的过滤属性数组一样大,则Skills
包含所有MATCH (p:Person)-[r:HAS]->(s:Skill)
WHERE s.name IN ['java', 'fortran', 'cypher']
RETURN DISTINCT p, count(s)
CASE
我认为您可以将其与MATCH (p:Person)-[r:HAS]->(s:Skill)
WHERE s.name IN ['java', 'fortran', 'cypher']
RETURN
CASE
WHEN count(s) = 3
THEN p
ELSE 0
END
语句结合使用以返回数据:
// A declaration without any code. We force inline
__attribute__((always_inline)) void inline_func();