有了arangodb AQB,您如何从/到顶点退出/退出?在查询中?
假设从有了arangodb AQB,您如何从/到顶点退出/退出?在查询中?,arangodb,graph-traversal,Arangodb,Graph Traversal,假设从v3.x起删除的fluent查询界面中的以下查询: var tens = graph._vertices(lst).outEdges().restrict("knows").toVertices() .inEdges().restrict("works").fromVertices().inEdges().restrict("owns") .fromVertices().toArray(); 这里的lst是一个简单的顶点列表,这些顶点是从先前的查询中获得的, 而lst中的顶点可能具有输出
v3.x
起删除的fluent查询界面中的以下查询:
var tens = graph._vertices(lst).outEdges().restrict("knows").toVertices()
.inEdges().restrict("works").fromVertices().inEdges().restrict("owns")
.fromVertices().toArray();
这里的lst
是一个简单的顶点列表,这些顶点是从先前的查询中获得的,
而lst
中的顶点可能具有输出边关系,其中之一
是类型的,这些outedge指向的顶点依次具有类型的传入边
这将如何与AQB一起书写?这两个(AQB和fluent查询接口
应该重叠,这就是为什么删除了一个)。
Iv查看了文档,但我没有看到任何对上述查询有帮助的内容这是我迄今为止得出的结论:
db._query("FOR vrt0 in @lst FOR vrt1 in OUTBOUND vrt0 knows FOR vrt2 in
INBOUND vrt1 works FOR vrt3 in INBOUND vrt2 owns RETURN vtr3",{"@lst": lst });
检索到的信息与我从相应的fluent查询界面所期望的信息相同 这是我到目前为止所做的工作:
db._query("FOR vrt0 in @lst FOR vrt1 in OUTBOUND vrt0 knows FOR vrt2 in
INBOUND vrt1 works FOR vrt3 in INBOUND vrt2 owns RETURN vtr3",{"@lst": lst });
检索到的信息与我从相应的fluent查询界面所期望的信息相同 您认为这不能在AQB中表示是正确的。我们目前正在弃用AQB,转而使用JavaScript驱动程序(arangojs)和ArangoDB 2.8及更高版本支持的aql
模板处理程序:
使用模板字符串处理程序,可以在Arangodb3中编写任意AQL查询。如果我理解正确,您流畅的查询应该转化为以下内容:
db._query(aql`
FOR vertex IN ${lst}
FOR v1 IN OUTBOUND vertex knows
FOR v2 IN INBOUND v1 works
FOR v3 IN INBOUND v2 owns
RETURN v3
`).toArray()
你是对的,这不能在AQB中表示。我们目前正在弃用AQB,转而使用JavaScript驱动程序(arangojs)和ArangoDB 2.8及更高版本支持的aql
模板处理程序:
使用模板字符串处理程序,可以在Arangodb3中编写任意AQL查询。如果我理解正确,您流畅的查询应该转化为以下内容:
db._query(aql`
FOR vertex IN ${lst}
FOR v1 IN OUTBOUND vertex knows
FOR v2 IN INBOUND v1 works
FOR v3 IN INBOUND v2 owns
RETURN v3
`).toArray()