查找其他 table 未引用的文档

Find documents not referenced by another table

有点像 "not_eq_join",如果说得通的话。

A 有一个 table A 文档包含一个 _key 字段(它是主键),另一个 table 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 选择(也按其他条件筛选)。

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

当然,我愿意这样做"as quickly as possible" :)

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

您可以通过写r.table('B').distinct({index: 'refs'}).

来获取索引(包括多索引)中的不同值

如果 B 引用的文档数量与 A 的大小相比很大,这就很难有效地做到这一点。