Neo4j 如何在不限制全局查询的情况下获取COLLECT的第一个元素?
在一个类似twitter的应用程序中,我只想得到最后3个为特定标签发布推文的用户(a、B、C、D、E) 如果我在查询的末尾添加LIMIT子句,则整个结果集都是有限的 因为一个用户可以有很多朋友,所以我不想回复所有这些用户,只想回复那些hashtag中发布的最后2或3个 是否有任何与过滤器/减少解决方案,以获得我所期望的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
运行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