rethinkdb - hasFields 查找具有多个多个缺失条件的所有文档

Posted

技术标签:

【中文标题】rethinkdb - hasFields 查找具有多个多个缺失条件的所有文档【英文标题】:rethinkdb - hasFields to find all documents with multiple multiple missing conditions 【发布时间】:2016-10-15 23:26:45 【问题描述】:

我找到了在此 SO 线程 RethinkDB - Find documents with missing field 中查找缺少字段的表中的所有文档的答案,但是我想根据缺少的字段和不同字段中的某个值进行过滤。

我想返回所有缺少字段emailisCurrent: 值为1 的文档。因此,我想返回所有缺少电子邮件字段的当前客户,以便我可以添加该字段。 rethink 网站上的文档未涵盖此案例。

这是我最好的尝试:

r.db('client').table('basic_info').filter(function (row) 
  return row.hasFields(email: true ).not(),
/*no idea how to add another criteria here (such as .filter(isCurrent:1)*/

  ).filter

【问题讨论】:

【参考方案1】:

其实一个filter就可以搞定。而且,它会比您当前的解决方案更快:

r.db('client').table('basic_info').filter(function (row) 
    return row.hasFields(email: true ).not()
      .and(row.hasFields(isCurrent: true ))
      .and(row("isCurrent").eq(1));
)

或:

r.db('client').table('basic_info').filter(function (row) 
    return row.hasFields(email: true ).not()
      .and(row("isCurrent").default(0).eq(1));
)

【讨论】:

【参考方案2】:

我刚刚意识到我可以链接多个.filter 命令。 这对我有用:

r.db('client').table('basic_info').filter(function (row) 
    return row.hasFields(email: true ).not()
).filter(isCurrent: 1).;

我的下一个任务:将所有这些放入一个数组中,然后批量输入电子邮件地址

【讨论】:

以上是关于rethinkdb - hasFields 查找具有多个多个缺失条件的所有文档的主要内容,如果未能解决你的问题,请参考以下文章

不向 rethinkdb 插入数据

如何在 Ubuntu 上卸载 RethinkDB?

RethinkDB:​​更新文档

Rethinkdb复制和数据一致性

RethinkDB:​​根据过滤字段过滤文档

socket.io vs RethinkDB changefeed