基于RethinkDB中数组中所有对象的键/值进行过滤

时间:2014-04-13 18:41:13

标签: javascript database rethinkdb nosql

我有一个RethinkDB表,其记录结构如下:

{
 one: [
  {
   field: val,
   foo: bar
  },
  {
   field: val2
  }
 ]
}

现在,如果我做了类似

的事情
reql = reql.filter(function(tb) {
                    return tb("one").contains(function(k) {
                            return k("field").eq(val);
                    });
        });

我匹配键中的其中一个对象的所有文档"一个"有一个关键"字段"值匹配" val"。但是,我想要做的只是匹配所有数组中对象的文档在" one"有钥匙"字段"值匹配" val"。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以将数组的每个元素映射到布尔值(“field”的值是否为“val”),然后使用and缩小。

这样的事情:

reql.filter(function(tb) {
    return tb("one").map(function(element) {
        return element("field").eq("val")
    }).reduce(function(left, right) {
        return left.and(right)
    })
})