Neo4j 如何在不限制全局查询的情况下获取COLLECT的第一个元素?

Neo4j 如何在不限制全局查询的情况下获取COLLECT的第一个元素?,neo4j,Neo4j,在一个类似twitter的应用程序中,我只想得到最后3个为特定标签发布推文的用户(a、B、C、D、E) 如果我在查询的末尾添加LIMIT子句,则整个结果集都是有限的 因为一个用户可以有很多朋友,所以我不想回复所有这些用户,只想回复那些hashtag中发布的最后2或3个 是否有任何与过滤器/减少解决方案,以获得我所期望的 运行neo4j 1.8.2将对访问子集合进行操作 同时,您可以使用以下解决方法: start n=node(*) 何处有(n.名称) 以collect(n.name)作为名称 r

在一个类似twitter的应用程序中,我只想得到最后3个为特定标签发布推文的用户(a、B、C、D、E)

如果我在查询的末尾添加LIMIT子句,则整个结果集都是有限的

因为一个用户可以有很多朋友,所以我不想回复所有这些用户,只想回复那些hashtag中发布的最后2或3个

是否有任何与过滤器/减少解决方案,以获得我所期望的


运行neo4j 1.8.2将对访问子集合进行操作

同时,您可以使用以下解决方法:

start n=node(*)
何处有(n.名称)
以collect(n.name)作为名称

return reduce(a=[],x在name:a+filter(y在[x]:length(a)小心,新的filter语法是:

过滤器(a.array中的x,其中长度(x)=3)

START me=node(X), hashtag=node(A,B,C,D,E)
MATCH n-[USED_IN]->tweet<-[p:PUBLISH]-user-[FRIEND_OF]->me
WITH p.date? AS date,hashtag,user ORDER BY date DESC
WITH hashtag, COLLECT(user.name) AS users
RETURN hashtag._id, users;
+-------------------------------------------+
| hashtag   | users                         |
+-------------------------------------------+
| "paradis" | ["Alexandre","Paul"]          |
| "hello"   | ["Paul"]                      |
| "public"  | ["Alexandre"]                 |
+-------------------------------------------+
start n=node(*) 
where has(n.name) 
with collect(n.name) as names 
return reduce(a=[], x in names : a + filter(y in [x] : length(a)<2)) as two_names