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

问题描述 投票:0回答:1

我是 ArangoDB 新手,正在尝试重现 https://github.com/arangodb/docs/blob/28b266f143232beb17e5c35cd545d4f3909a1815/3.0/cookbook/graph-example-actors-and-movies.md的结果。

事实证明,像 NEIGHBORS() 这样的函数在 3.0 中已被弃用。有一个迁移指南https://github.com/arangodb/docs/blob/28b266f143232beb17e5c35cd545d4f3909a1815/3.0/cookbook/aql-migration-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
语句位于循环内部,而不是外部。另外,我似乎无法在任何地方找到有关给定函数的任何文档?

例如:“所有出演过“电影 1”和“电影 2”的演员?”会被查询为

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

自然地从 sql 背景中读取。但是如何使用上述 for 循环来实现这一点呢?

任何帮助将不胜感激。

arangodb
1个回答
3
投票

您可以在此处找到这些函数的文档:https://docs.arangodb.com/3.11/aql/functions/array/

您的食谱示例的 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()

© www.soinside.com 2019 - 2024. All rights reserved.