let seed = (FOR testItem IN test2
FILTER testItem._id in ['test2/Q1', 'test2/Q3']
RETURN testItem._id)
let traversal = (FOR seedItem in seed
FOR v, e IN 1..1 ANY seedItem
testEdge
RETURN {seed: seedItem, e_to: e._to})
for t in traversal
COLLECT seeds = t.seed INTO groups = t.e_to
return {myseed: seeds, mygroups: groups}
FOR testItem IN test2
FILTER testItem._id in ['test2/Q1', 'test2/Q3']
LET testEdges = (
FOR v, e IN 1..1 ANY testItem testEdge
RETURN e
)
RETURN {myseed: testItem._id, mygroups: testEdges[*]._to}
1条答案
按热度按时间rbpvctlc1#
我可以想到两种方法来实现这一点。第一种更容易理解,但第二种更简洁。对于下面的例子,我有一个顶点集合test2和一个边集合testEdge,它链接test2中的父项和子项
使用收集:
上面我们首先得到我们想要遍历的项(seed),然后我们执行遍历并得到一个具有seed.id和相关边的对象,最后我们使用
collect into
对结果进行分组使用阵列扩展
这一次,我们使用
let
语句将种子搜索和遍历结合起来。在这两种情况下,我最终得到的结果如下所示: