我有下面的图表:
我想写一个AQL查询,它返回从绿色开始顶点开始的所有红色入界顶点。
我尝试了以下AQL从绿色顶点检索红色顶点。
WITH collection_A, collection_W
LET A_Neighbors = (FOR t IN collection_edges
FILTER t._to == 'collection_W/W'
RETURN t._from)
let all_w = []
for item in A_Neighbors
let sub_w = (for v1 in collection_edges
FILTER v1._to == item
return v1 )
return APPEND(all_w, sub_w)
除此之外,还有什么好的解决方案吗?因为我不确定这是否给出了起始顶点collection_W/W
的正确值。
我的collection_edges
包含以下两种文档。
{
_from: collection_W/w,
_to: collection_A/a,
label: INBOUND
}
和
{
_from: collection_A/a,
_to: collection_W/w,
label: OUTBOUND
}
1条答案
按热度按时间sc4hvdpw1#
给定图,我建议使用图遍历特定的
[min[..max]]
值,如下所示(使用匿名图):[min[..max]]
值可以是一个范围(1..3
),也可以是单个值(1
)。0
将返回起始节点1
将返回相邻节点2
将跳过相邻节点,仅返回下一级别的节点(如果有)2..999
将返回起始节点的所有节点(最多999跳)此外,如果要确保只返回特定集合中的节点,请为此添加筛选器:
也可以对边进行过滤(如果已将特定属性/值添加到边):
或者使用PRUNE限制遍历: