如何找到所有家庭中所有最老的兄弟姐妹

时间:2016-03-10 07:43:10

标签: neo4j cypher

如果我有很多家庭代表:

(parent:Person)<-[:CHILD_OF]-(child:Person {age:19})

然后查询会如何找到所有家庭中最老的孩子?

我有以下建议,但这只返回1个节点:

match (parent:Person)<--(child:Person) return child order by child.age desc limit 1

2 个答案:

答案 0 :(得分:1)

可能可以进行优化,现在快速进行 -

match (c:Person)-[:CHILD_OF]->(p)
with p, max(c.age) as maxAge, collect(c) as children
return p,filter (x in children where x.age=maxAge)

答案 1 :(得分:0)

match (parent:Person)<--(child:Person) with parent, max(child.age) as maxAge
Match (parent)<--(child:Person) where child.age = maxAge
return *

如果他们的年龄相同,可能会有几个孩子返回,如果你想要退回一个孩子,你应该多再使用一个孩子 MAX(ID(子)) 你会有

Match (parent:Person)<--(child:Person) with parent, max(child.age) as maxAge
Match (parent)<--(child:Person) where child.age = maxAge with parent, max(id(child)) as maxId
Match (parent)<--(child:Person) where id(child) = maxId return *