是否可以使用 Cloudant Query/CouchDB 2.0 Find 设置 $regex 标志?

具体来说,我想要一个不区分大小写的搜索,全局搜索也很有用。

在 JavaScript 中,我会这样做:

db.find({
    selector: {
      _id: {$gt: null},
      series: {$regex: /mario/i}
    }
  });

但我不知道如何将其编码为 Erlang 字符串。

最佳答案

来自Cloudant支持:

我了解您希望使用Cloudant Query中的 $ regex 运算符进行不区分大小写的 匹配。

例如,您可以使用这个 Cloudant Query 选择器来获取“series”字段具有字符串值且与字符串“mario”不区分大小写匹配的所有文档:

{
  "selector": {
    "_id": {
      "$gt": null
    },
    "series": {
      "$regex": "(?i)mario"
    }
  }
}

在名为 query.txt 的文件中使用该选择器,并为 $ACCOUNTNAME、$DATABASE、$USERNAME 和 $PASSWORD 设置适当的值,您可以运行此查询以获得正确的结果:
curl -X POST http://$ACCOUNTNAME.cloudant.com/$DATABASE/_find -H
  "Content-Type: application/json" -d @query.txt -u $USERNAME:$PASSWORD

https://docs.cloudant.com/cloudant_query.html#creating-selector-expressions 的 Cloudant API 引用介绍了 Cloudant 查询选择器中的 $regex 运算符:



在它在 http://erlang.org/doc/man/re.html 引用的 Erlang 正则表达式信息中,它说
在选项列表中: compile(Regexp, Options) -> {ok, MP} | {错误,ErrSpec}



我希望这有帮助。

关于couchdb - Cloudant 查询和 CouchDB Mango : How to set $regex flags?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37157723/

10-11 14:34