如何在rethinkdb中检查序列是否包含另一个序列的任何元素?

时间:2015-08-03 00:46:57

标签: rethinkdb

我知道"包含"将检查一个序列是否包含另一个序列的所有元素。我想知道:

Is there any simple way to check whether a sequence contains any element of another sequence?

更新 我不想检查A是否包含B的所有元素,而是包含B的任何一个元素。

2 个答案:

答案 0 :(得分:0)

如果你想检查一些seq seq是否包含另一个序列test_seq的所有元素,我会使用set_difference

test_seq.setDifference(seq).isEmpty().not()

如果seq非常大(就像在表格上映射的结果一样),您只能通过reduce有效地执行此操作:

seq.map(function(row) {
  return test_seq.setIntersection([row])
}).reduce(function(a, b) {
  return a.setUnion(b);
}).count().eq(test_seq.count())

答案 1 :(得分:0)

您可以使用do尝试difference

例如,您的表格 MyTable 包含 MyArray ,其中包含字符串数组。

r.table("MyTable").get("my_id").do(
    function (record) {
        return record('MyArray').difference(["something1", "something2"]).count().ne(record('MyArray').count()
          )
    }
)

如果字段 MyArray 包含[“something1”,“something2”]的任何元素,它将返回true。否则 - false