Cypher查询:找到所有孩子满足某些特定要求的节点

时间:2015-11-04 08:09:40

标签: neo4j cypher

查看http://console.neo4j.org/?id=xau632

如何编写将返回的Cypher查询:

  • 只有男孩的父母(应该只返回John),
  • 所有孩子名字以“P' P' (这应该只返回贝蒂)。

2 个答案:

答案 0 :(得分:2)

试试这个

MATCH (p:Parent)-[:PARENT_OF]->(c)
WITH p, collect(c) AS children
WHERE ALL (c IN children WHERE c:Son)
RETURN p

你也可以过早过滤

MATCH (p:Parent)-[:PARENT_OF]->(c)
WITH p, ALL(child IN collect(c) WHERE child:Son) as allSons
WHERE allSons = true
RETURN p

答案 1 :(得分:1)

您可以匹配相关节点中的属性,这是一个示例(以及您要查找的第一个查询的解决方案):

MATCH (p:Parent)-[:PARENT_OF]->(s:Son)
WHERE size((p)-[:PARENT_OF]->(:Daugter))= 0
RETURN DISTINCT (p)

而且,你也可以为第二个做(检查Neo4j's documentation on WHERE

事实上,你不能在这里问两个问题,你必须要了解如何做,否则你将不会学习密码,这就是为什么我给你一个例子和文档来做第二个。