【发布时间】:2019-07-27 00:06:35
【问题描述】:
我想使用 AQL 在 ArangoDB 中查询一个集合,并在查询中的每个节点处,使用遍历展开节点。
我试图通过在集合查询中使用 LET 语句将遍历作为子查询调用来做到这一点。 即使查询完成,遍历的结果集也是空的。
FOR ne IN energy
FILTER ne.identifier == "12345"
LET ne_edges = (
FOR v, e IN 1..1 ANY ne relation
RETURN e
)
RETURN MERGE(ne, {"edges": ne_edges})
[
{
"value": 123.99,
"edges": []
}
]
我已经验证有边,并且当它不作为子查询执行时,遍历正确返回。
似乎初始查询在子查询返回结果之前完成,结果如下。
我错过了什么?还是有更好的方法?
【问题讨论】:
-
您查询的方式是正确的。这一定是与数据相关的问题。你确定你锯的边缘引用了你试图用
ne.identifier == "12345"过滤的对象吗? -
顺便说一句,
energy是什么?是收藏吗?如果是这样,您发布的输出应该会有所不同。它还应该包含一些系统属性,例如_key和_id。可能这是一个问题。当您进行遍历时,您必须指定起始对象的对象或 _id 值。如果ne不是具有_id属性的对象,则遍历将不起作用。 -
@PeterLiapin energy 是一个集合,是的。我给出的代码是虚拟代码,只是为了代表而不是精确的输出。我应该在我的问题中提到这一点,抱歉。