Cloudant Query&CouchDB Mango:如何设置$ regex标志?

Col*_*kow 2 couchdb cloudant

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

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

在JavaScript中我会这样做:

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

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

Col*_*kow 8

来自Cloudant支持:

我知道你希望在Cloudant Query 中使用$ regex运算符进行不区分大小写的匹配.

例如,您可以使用此Cloudant查询选择器获取"series"字段具有字符串值的所有文档,其中字符串值与字符串"mario"不区分大小写:

{
  "selector": {
    "_id": {
      "$gt": null
    },
    "series": {
      "$regex": "(?i)mario"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在名为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
Run Code Online (Sandbox Code Playgroud)

https://docs.cloudant.com/cloudant_query.html#creating-selector-expressions上的Cloudant API参考说明了Cloudant查询选择器中的$ regex运算符:

大多数选择器表达式的工作方式与给定运算符的预期完全相同.$ regex运算符使用的匹配算法目前基于Perl兼容正则表达式(PCRE)库.但是,并非所有PCRE库都已实现,$ regex运算符的某些部分超出了PCRE提供的范围.有关实现内容的更多信息,请参阅Erlang正则表达式信息http://erlang.org/doc/man/re.html.

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

无壳

  • 模式中的字母匹配大写和小写字母.

  • 它等同于Perl的/ i选项,它可以通过(?i)选项设置在模式中更改.

  • 大写和小写字母定义为ISO-8859-1字符集.

我希望这有帮助.