[英]ArangoDB - How do you refer to OLD in an upsert statement using AQB
[英]With arangodb AQB how do you get out/inEdges an from/toVertices? in a query?
假设从v3.x
删除的fluent query interface
的以下查询:
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
应该重叠,这就是为什么要删除其中一个)。 iv查看了github上的文档,但是我看不到任何有助于上述查询的内容
到目前为止,这是我解决的问题:
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
。
您是正确的,它不能在AQB中表示。 我们目前正在弃用aql
,以支持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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.