ArangoDB 遍历顶点邻居的条件
ArangoDB Traversal with conditions on vertice's neighbours
我有下图:
我想写一个 returns 路径的 AQL 查询,从节点 Q1
开始,其中路径中的第二个节点有邻居 P6
(邻居起始节点 Q1
的邻居总是有一个 P 节点(P6
、P4
、..)。
例如,好的路径是:Q1->Q1-P6-3->STRING-2
、Q1->Q1-P6-3->Q1-P6-3-QUAL-P2-2->QUANT-2
等。
检查病情的最佳方法是什么?现在,我已经向 Q1-P6-3
等节点添加了一个属性 property
,其中包含来自其邻域的 P 节点的键,并且仅过滤路径:
FILTER p.vertices[1].property == 'P6'
但我相信有一种更聪明的方法可以做到这一点。
提前致谢!
AQL 首先获取以 P6 作为直接邻居的所有节点的列表,然后使用它来过滤遍历查询中的路径。这样你就不需要跟踪顶点中的 属性:
LET p6Neighbors = (FOR t IN testEdge
FILTER t._to == 'test2/P6'
RETURN t._from)
for v,e,p in 1..5 ANY 'test2/Q1' testEdge
FILTER p.vertices[1]._id in p6Neighbors
return p
我有下图:
我想写一个 returns 路径的 AQL 查询,从节点 Q1
开始,其中路径中的第二个节点有邻居 P6
(邻居起始节点 Q1
的邻居总是有一个 P 节点(P6
、P4
、..)。
例如,好的路径是:Q1->Q1-P6-3->STRING-2
、Q1->Q1-P6-3->Q1-P6-3-QUAL-P2-2->QUANT-2
等。
检查病情的最佳方法是什么?现在,我已经向 Q1-P6-3
等节点添加了一个属性 property
,其中包含来自其邻域的 P 节点的键,并且仅过滤路径:
FILTER p.vertices[1].property == 'P6'
但我相信有一种更聪明的方法可以做到这一点。 提前致谢!
AQL 首先获取以 P6 作为直接邻居的所有节点的列表,然后使用它来过滤遍历查询中的路径。这样你就不需要跟踪顶点中的 属性:
LET p6Neighbors = (FOR t IN testEdge
FILTER t._to == 'test2/P6'
RETURN t._from)
for v,e,p in 1..5 ANY 'test2/Q1' testEdge
FILTER p.vertices[1]._id in p6Neighbors
return p