2016-05-11 54 views
1

是否可以使用Cloudant Query/CouchDB 2.0查找設置$ regex標誌?

具體而言,我想要一個不區分大小寫的搜索和全球也將是有用的。

在JavaScript中,我會做:

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

但我不知道怎麼說,以編碼到一個Erlang字符串。

回答

2

從Cloudant支持:

我知道你想使用Cloudant查詢的$正則表達式運營商做不區分大小寫比賽。

舉個例子,你可以使用這個Cloudant查詢選擇來獲得在其中的「系列」字段,其中有一個不區分大小寫的匹配字符串「馬里奧」的字符串值的所有文檔:

{ 
    "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運算符:

大多數選擇器表達式的運行方式與給定運算符所期望的完全相同。 $ regex運算符 使用的匹配算法目前基於Perl兼容正則表達式(PCRE) 庫。但是,並不是所有的PCRE庫都實現了,$ regex操作符的某些部分超出了PCRE提供的部分。有關 的更多信息,請參閱Erlang Regular 表達信息http://erlang.org/doc/man/re.html

而在Erlang的正則表達式的信息,它指的是在http://erlang.org/doc/man/re.html它說 中的選項列表:編譯(正則表達式,選項) - > {ok了,MP} | {錯誤,ErrSpec}

無殼

  • 在字母模式匹配大寫和小寫字母。

  • 它相當於Perl的/ i選項,它可以通過(?i)選項設置在模式內更改。

  • 大小寫字母的定義與ISO-8859-1字符集相同。

我希望這有助於。

+0

注意:「(?m)」會進行多行搜索。這也可以與「我」旗幟相結合。 –

0

使用Erlang的正則表達式CouchDB的字符串匹配 例如: { 「選擇」:{ 「_ ID」:{ 「$正則表達式」: 「斯雷+」}, 「DOCTYPE」: 「用戶」}, 「田」: 「_id」],「sort」:[{「_id」:「asc」}]}