通过计算节点总数来限制从Neo4J检索的结果数量?

时间:2014-12-17 18:37:43

标签: neo4j cypher

我在我的应用中使用了以下类型的Neo4J cypher请求:

START rel=relationship:relationship_auto_index(user='6dbe5450-852d-11e4-9c48-b552fc8c2b90')
WHERE TYPE(rel)='TO' WITH rel MATCH (ctx:Context) WHERE rel.context = ctx.uid 
RETURN
DISTINCT STARTNODE(rel).uid AS source_id, STARTNODE(rel).name AS source_name,
ENDNODE(rel).uid AS target_id, ENDNODE(rel).name AS target_name, rel.uid AS edge_id, 
ctx.name AS context_name, rel.statement AS statement_id, rel.weight AS weight;

它返回112行,它们是节点之间的关系,以及每个关系出现的上下文以及它出现的语句。

我知道我可以使用LIMIT 50来限制此表中的行数。

但是,我需要做的是以这种方式自动对行进行排序,我只获得50个最常提到的节点,source_nametarget_name中的 source_name列。

所以我需要做的是计算我在target_name和{{1}}中拥有的每种节点的数量,收集它们,并且只显示频繁提及的50个节点。

有没有人知道我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:0)

START rel=relationship:relationship_auto_index(user='6dbe5450-852d-11e4-9c48-b552fc8c2b90')
WHERE TYPE(rel)='TO' WITH rel MATCH (ctx:Context) WHERE rel.context = ctx.uid 
UNWIND [startnode(rel),endnode(rel)] as node
RETURN node.uid, node.name
       collect([rel.uid AS edge_id, rel.statement AS statement_id, rel.weight AS weight,
       ctx.name AS context_name]) as aggregated_data, 
       count(*)
ORDER BY count(*) desc limit 50;