0

一种“not_eq_join”,如果有道理的话。

A 有一个表A,其中的文档包含一个_key字段(它是主键),另一个表B有一个refs指向 的字段A._key,这是一个多索引,因此它可能包含对A. A 很大,但 B 不是(可能小于 1000)

进入A

{
  '_key': 'doc1',
  ...
}

进入B

{
  'refs': ['doc1'],
  ...
}

问题是; 我如何找到没有A被任何文件引用的文件?B

我天真的解决方案是从B.refs多重索引(但如何做到这一点?)中检索所有唯一值到数组变量,然后执行以下操作:.filter(refArray.contains(R.row['_key']).not_())A选择上(也按其他条件过滤)。

但这似乎是错误的,有更好的想法吗?

当然,我想“尽快”做到这一点:)

4

1 回答 1

1

假设引用的文档数量B很少,您的解决方案可能是最好的解决方案。

您可以通过编写来获取索引(包括多索引)中的不同值r.table('B').distinct({index: 'refs'})

如果 引用的文档数量B与 的大小相比A很大,那么有效地执行此操作将变得更加困难。

于 2015-10-13T18:29:04.887 回答