假设来自fluent query interface
的以下查询已从v3.x
移除:
var tens = graph._vertices(lst).outEdges().restrict("knows").toVertices()
.inEdges().restrict("works").fromVertices().inEdges().restrict("owns")
.fromVertices().toArray();
这里lst
只是一个从先前查询中获得的顶点列表,
并且lst
中的顶点可以具有其中一个的外边缘关系
属于knows
类型,这些outEdges指向的顶点依次具有works
类型的传入边,
如何用AQB写这个?这两个(AQB和fluent query interface
应该重叠,这就是为什么一个被删除)。
我查看了文档on github,但我没有看到任何有助于查询的内容,如上所述
答案 0 :(得分:1)
这是我到目前为止所做的工作:
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 query interface
的期望。
答案 1 :(得分:1)
你说这是无法在AQB中表现出来的。我们目前正在弃用AQB,转而支持JavaScript驱动程序(arangojs)和ArangoDB 2.8及更高版本支持的aql
模板处理程序:https://docs.arangodb.com/3/Manual/Appendix/JavaScriptModules/ArangoDB.html#the-aql-template-string-handler
使用模板字符串处理程序,可以在ArangoDB 3中编写任意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()