我是ArangoDB的新手,我正在尝试重现https://docs.arangodb.com/3.0/cookbook/Graph/ExampleActorsAndMovies.html的结果。事实证明,NEIGHBORS()等函数在3.0中已弃用。我设法获得了一份迁移指南https://docs.arangodb.com/3.0/cookbook/AQL/MigratingEdgeFunctionsTo3.html
db._query("RETURN NEIGHBORS(movies, actsIn, 'TheMatrix', 'any')").toArray();
再次作为
工作db._query("FOR x IN ANY 'movies/TheMatrix' actsIn RETURN x._key").toArray();
但是,我不知道如何使用UNION_DISTINCT
或INTERSECTION
,因为RETURN
语句位于循环内部,而不在外部。另外,我似乎无法在任何地方找到关于给定函数的任何文档?
例如:"所有演员都在" movie1" AND" movie2" ?"本来可以被查询为
db._query("RETURN INTERSECTION(NEIGHBORS(movies, actsIn, 'TheDevilsAdvocate', 'any'), NEIGHBORS(movies, actsIn, 'TheMatrix', 'any'))").toArray();
自然地来自sql背景。但是如何使用上面提到的for循环呢?
非常感谢任何帮助。
答案 0 :(得分:3)
您可以在此处找到这些功能的文档:https://docs.arangodb.com/3.0/AQL/Functions/Array.html
您的AQL for cookbook-example应该如下所示:
db._query("FOR x IN UNION_DISTINCT ((FOR y IN ANY 'movies/TheMatrix' actsIn RETURN y), (FOR y IN ANY 'movies/TheDevilsAdvocate' actsIn RETURN y)) RETURN x._id").toArray()
db._query("FOR x IN INTERSECTION ((FOR y IN ANY 'movies/TheMatrix' actsIn RETURN y), (FOR y IN ANY 'movies/TheDevilsAdvocate' actsIn RETURN y)) RETURN x._id").toArray()