是否可以使用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字符串.
来自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字符集.
我希望这有帮助.
| 归档时间: |
|
| 查看次数: |
4793 次 |
| 最近记录: |