2013-06-11 173 views
1

我有以下查询重新安排基于另一个集合集合列表

neo4j-sh (?)$ 
$start n=node(*) match p=n-[r:LIKES]->items return n,collect(r.w),collect(items.name); 
==> +------------------------------------------------------------------------------------------------------------------+ 
==> | n     | collect(r.w)   | collect(items.name) | 
==> +------------------------------------------------------------------------------------------------------------------+ 
==> | Node[249]{name:"u1"} | [0,0.93]    | ["f5","f2"]   | 
==> | Node[248]{name:"u2"} | [0,-0.76,1,-0.66]  | ["f4","f3","f2","f1"] | 
==> +------------------------------------------------------------------------------------------------------------------+ 

我想重新排序的项目按照类似下面的

==> +------------------------------------------------------------------------------------------------------------------+ 
==> | n     | collect(r.w)   | collect(items.name) | 
==> +------------------------------------------------------------------------------------------------------------------+ 
==> | Node[249]{name:"u1"} | [0.93,0]    | ["f2","f5"]   | 
==> | Node[248]{name:"u2"} | [1,0,-0.66,-0.76] | ["f2","f4","f1","f3"] | 
==> +------------------------------------------------------------------------------------------------------------------+ 

如何RW的排序值我可以根据collect(rw)的排序值重新排列collect(items.name)的元素吗?

+1

这可能会有帮助。 http://docs.neo4j.org/chunked/milestone/query-with.html#with-sort-results-before-using-collect-on-them – Nicholas

+0

谢谢,但我需要重新排列项目集合根据排序的值的rw集合,我不知道如何去做 – user1848018

回答

4

我觉得可能是这样

START n=node(*) 
MATCH p=n-[r:LIKES]->items 
WITH n,r,items 
ORDER BY r.w DESC, items.name DESC 
RETURN n,collect(r.w),collect(items.name); 
+0

工作很好。谢谢 – user1848018

0

通过WITH管理您的结果,然后订购它们。然后通过RETURN正常进行聚合。

START n=node(*) 
MATCH p=n-[r:LIKES]->items 
WITH n,r,items 
ORDER BY r.w DESC 
RETURN n,collect(r.w),collect(items.name); 
+0

我已经试过了,它只是重新排列rw,并不影响items.name的排序。我不知道如何将这两个系列连接在一起 – user1848018

相关问题