ArangoDB 如何在NEIGHBORS()弃用后使用UNION_DISTINCT()或INTERSECTION()

wlzqhblo  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(162)

我是ArangoDB的新手,正在尝试重现https://github.com/arangodb/docs/blob/28b266f143232beb17e5c35cd545d4f3909a1815/3.0/cookbook/graph-example-actors-and-movies.md的结果。
原来像NEIGHBORS()这样的函数在Python 3.0中已经被弃用了。有一个迁移指南https://github.com/arangodb/docs/blob/28b266f143232beb17e5c35cd545d4f3909a1815/3.0/cookbook/aql-migrating-edge-functions-to3.md与我设法得到

db._query("RETURN NEIGHBORS(movies, actsIn, 'TheMatrix', 'any')").toArray();

再次工作,

db._query("FOR x IN ANY 'movies/TheMatrix' actsIn RETURN x._key").toArray();

但是,我不知道如何使用UNION_DISTINCTINTERSECTION,因为RETURN语句位于循环内部,而不是外部。此外,我似乎找不到任何文件的给定功能的任何地方?
例如:“所有在“movie1”和“movie2”中都演过的演员?“会被质疑为

db._query("RETURN INTERSECTION(NEIGHBORS(movies, actsIn, 'TheDevilsAdvocate', 'any'), NEIGHBORS(movies, actsIn, 'TheMatrix', 'any'))").toArray();

其读取自然来自SQL背景。但是如何使用上面提到的for循环来实现这一点呢?
如果你能帮忙的话,我将不胜感激。

8iwquhpp

8iwquhpp1#

您可以在此处找到这些函数的文档:https://docs.arangodb.com/3.11/aql/functions/array/
cookbook-example的AQL应该如下所示:

UNION_DISTINCT

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()

相关问题