我是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_DISTINCT
或INTERSECTION
,因为RETURN
语句位于循环内部,而不是外部。此外,我似乎找不到任何文件的给定功能的任何地方?
例如:“所有在“movie1”和“movie2”中都演过的演员?“会被质疑为
db._query("RETURN INTERSECTION(NEIGHBORS(movies, actsIn, 'TheDevilsAdvocate', 'any'), NEIGHBORS(movies, actsIn, 'TheMatrix', 'any'))").toArray();
其读取自然来自SQL背景。但是如何使用上面提到的for循环来实现这一点呢?
如果你能帮忙的话,我将不胜感激。
1条答案
按热度按时间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()