日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

filter表達式

支持用戶指定過濾條件,篩選文檔。過濾表達式不是一個必選子句。

語法filter:"表達式" 其中表達式左值 關系運算符 右值

  • 左值:可以是一個屬性字段或者是一個常量值(可以是數值或者string)

  • 關系運算符:目前支持的邏輯運算有>、<、=、<=、>=、!=

  • 右值:可以是一個屬性字段或者是一個常量值(可以是數值或者string)

示例

filter:"price > 100" 表示篩選出價格大于100的文檔
filter:"ids=1" ids為一個多值字段,表示篩選出ids中包含1的文檔
filter:"province!=\"浙江\"" ,表示篩選出province不為浙江的文檔

查詢示例

多個過濾條件組合

語法:filter:"條件 邏輯運算符 條件"

條件:是一個完整的關系運算表達式,比如 price > 100

邏輯運算符:AND、OR。AND表示兩邊條件都必須為TRUE,OR表示有一個為TRUE即可。也可以在子句中使用(),括號的優先級最高。

示例

filter:"price > 100 AND categoryId=10",表示篩選出categoryId為10,且價格大于100的文檔
filter:"categoryId = 100 OR categoryId=10",表示篩選出categoryId為100或者10的文檔
filter:"(categoryId = 100 OR categoryId=10) AND price > 100",表示篩選出categoryId為100或者10且價格大于100的文檔

過濾時使用算術運算

語法:filter:"左值 算術運算符 右值 關系運算符 條件值"

  • 左值:可以是一個屬性字段或者是一個常量值(可以是數值或者string)

  • 算術運算符:目前支持的邏輯運算有+、-、*、/

  • 右值:可以是一個屬性字段或者是一個常量值(可以是數值或者string)

  • 條件值:可以是一個屬性字段或者是一個常量值

示例

filter:"price*0.5 > 100",表示篩選出price打5折之后大于100的文檔
filter:"price-cost > 100",表示篩選出price減去cost大于100的文檔
filter:"(price*0.5 > 100) AND categoryId=10",表示篩選出price打5折之后大于100且categoryId為10的文檔

過濾時使用function函數

語法:filter:"function 關系運算符 右值"

說明:function為內置的function函數,比如in/notin等,更多的內置函數可以參考內置function函數。如果function函數的返回值是bool型,那么filter中可以不需要關系運算符。另外關系運算符的右邊也可以是一個function函數。

示例

filter:"in(id,"1|2|3")",表示篩選出id為1或者2或者3的文檔

其他function用法可參考下文中的內置function函數。

內置function函數

distance

distance:獲取兩個點之間的球面距離。一般用于LBS的距離計算。

舉例

查找距離用戶(120.34256,30.56982)10公里內的商鋪(lon,lat為文檔中記錄商家的經緯度值,需要配置為屬性字段):

filter:"distance(lon,lat,\"120.34256\",\"30.56982\")<10"

contain/notcontain

說明

  • contain:判斷單值或多值a中是否包含b中描述的內容

  • notcontain:判斷單值或多值a中是否不在b中描述的內容

參數

contain(a,b)

  • a:輸入為單值多值的int32/int64/string 類型

  • b:輸入為常量string表達式,用|分隔,表示滿足任意一項即可

notcontain(a,b)

  • a:輸入為單值多值的int32/int64/string 類型

  • b:輸入為常量string表達式,用|分隔,表示不滿足任意一項即可

返回值

  • contain(a,b):boolean類型返回,表示參數a是否包含參數b中描述的集合

  • notcontain(a,b):boolean類型返回,表示參數a是否不在參數b中描述的集合

舉例

使用contain,檢索nid字段值在[1,2,3]的所有記錄

filter:"contain(nid, \"1|2|3\")"

使用notcontain,檢索nid字段值不在[1,2,3]范圍內的所有記錄

filter:"notcontain(nid, \"1|2|3\")"

in/notin

in和notin: 判斷字段值是否(不)在指定列表中

舉例

查詢文檔中type(int類型)為1或2或3的文檔:

filter:"in(type, \"1|2|3\")"

查詢文檔中type(int32類型)不為1或2或3的文檔:

filter:"notin(type, \"1|2|3\")"

注意事項

  • float、double類型因為精度問題無法做精確相等的判斷,如有這種場景請改用>和<來實現。

  • string類型的字段值,在filter表達式中必須要加雙引號,支持所有的關系運算,不支持算術運算。

  • string類型字段的過濾僅支持=、!=運算,含義為等于、不等于,不支持>、<等關系運算。

  • 多值字段使用=、!=時,其語義是多值字段只要包括filter的值即可。

  • 表達式中的雙引號需要轉義。