Neo4j Cypher:通过与另一个节点的关系对节点进行分组

时间:2015-04-28 17:13:15

标签: neo4j cypher

有了post-->category之类的图表,我如何才能为每个类别分配一个帖子?

即:

Having
    Post A1 --> Category A
    Post A2 --> Category A
    Post B1 --> Category B
    Post B2 --> Category B
    Post B3 --> Category B
    Post C1 --> Category C

I should get Post A2, Post B1, Post C1. 

我不介意给定类别的帖子,只为每个类别获得一个。

谢谢!

1 个答案:

答案 0 :(得分:10)

随机选择每个类别的帖子:

MATCH (p:Post)-[:HAS_CATEGORY]->(c:Category)
WITH c, collect(p) as posts
RETURN c, posts[toInt(rand()*length(posts))]

我们每个类别使用collect聚合函数,在回访中我们会随机选择一个条目。