繁体   English   中英

使用arangodb AQB,您如何从/到/从Edge进出? 在查询中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM