我在我的应用中使用了以下类型的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_name
和target_name
中的 source_name
列。
所以我需要做的是计算我在target_name
和{{1}}中拥有的每种节点的数量,收集它们,并且只显示频繁提及的50个节点。
有没有人知道我该怎么做?
谢谢!
答案 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;