Fyn*_*ynn 4 collections neo4j cypher
使用Cypher 1.8,有一些函数处理集合并返回单个元素:
HEAD( expression ):
START a=node(2)
RETURN a.array, head(a.array)
Run Code Online (Sandbox Code Playgroud)
LAST( expression ):
START a=node(2)
RETURN a.array, last(a.array)
Run Code Online (Sandbox Code Playgroud)
但是,我找不到函数来返回集合的第n个元素.我错过了什么?
Eve*_*man 12
目前没有好办法做到这一点.请通过https://github.com/neo4j/neo4j提交功能请求
我已经看到人们做头(尾巴(尾巴(尾巴(coll)))),虽然它可能是可以接受的快,但它仍然让我在查询中看到一点病,特别是如果你在谈论第17个元素或者更糟.
示例:http: //console.neo4j.org/r/bbo6o4
更新: 这是使用reduce和range执行此操作的方法.它使得你至少可以给第n个参数,即使它仍然让我感到畏缩:
start n=node(*)
with collect(n) as allnodes
return head(reduce(acc=allnodes, x in range(1,3): tail(acc)));
Run Code Online (Sandbox Code Playgroud)
http://console.neo4j.org/r/8erfup
更新2(2013年8月31日):
新的集合语法现在合并到2.0,理论上将成为M05的一部分!所以,你将能够做到:
start n=node(*)
with collect(n) as allnodes
return allnodes[3]; // or slices, like [1..3]
Run Code Online (Sandbox Code Playgroud)
我会在更新时添加指向快照文档的链接.
| 归档时间: |
|
| 查看次数: |
5210 次 |
| 最近记录: |