【发布时间】:2020-01-21 16:56:41
【问题描述】:
我正在尝试使用 ArangoDB 作为我目前使用的 Postgres 的替代品。在 Postgres 中,我有一个表格,zuffs 包含具有以下形式的行
hash passes visits
123 {1,2,4} {2,3,4,5}
passes 和 visits 都是 int[]。为了建立passes和访问的交集`我会写
SELECT ARRAY
(
SELECT UNNEST(a1) INTERSECT SELECT UNNEST(a2))
FROM (SELECT passes AS a1,visits as a2 FROM zuffs where hash = 1) q;
Postgres 强制执行以返回结果{2,4}。
现在假设我在 ArangoDB 中有集合 zuffs 和以下 documents
{"hash":45,"passes":[1,2,3],"visits":[3,11,17]}
{"hash":76,"passes":[11,2],"visits":[3,4,17]}
{"hash":13,"passes":[11,21],"visits":[13,44,27]}
{"hash":7,"passes":[2],"visits":[4,67]}
我不清楚我将如何执行以下操作
- 为带有
hash45的文档建立passes和visits的交集I1。 - 获取该结果并返回同一集合中与上面获得的交集 I2 具有非空交集的其他文档的哈希值。
虽然我很喜欢 ArangoDB,但遗憾的是它有自己的查询语言,而不仅仅是使用所需的 SQL 超集。在这种情况下,我发现我必须以某种方式使用FOR IN 和FILTER,但我完全不清楚如何使用。
【问题讨论】: