功能函數項
外掛程式功能函數可以用在filter子句作為過濾和篩選條件,而傳回值為數值型的功能函數在sort子句中,用來做排序。
其中功能函數參數出現的文檔欄位需根據對應函數文檔提示,建立為索引或屬性.
in/notin : 判斷欄位值是否(不)在指定列表中
1.詳細用法:
in(field, “number1|number2”)notin(field, “number1|number2”)
2.參數:
field:要判斷的欄位名,支援INT、LITERA、LFLOAT、DOUBLE類型,【不支援ARRAY、TEXT、模糊分詞系列類型】number列表:集合元素,多個值用’| ‘分隔,參數以字串形式傳入。
3.傳回值:
true/false
4.適用情境:
情境1:查詢文檔中包含“iphone”且type(int類型)為1或2或3的文檔;
query=default:’iphone’&&filter=in(type, “1|2|3”)
情境2:查詢文檔中包含“iphone”且type(int32類型)不為1或2或3的文檔;
query=default:’iphone’&&filter=notin(type, “1|2|3”)
5.注意事項:
-
函數參數依賴欄位需建立為屬性
-
in/notin函數在filter子句中使用時不支援ARRAY類型欄位,否則會報出語法錯誤【錯誤碼:6141,錯誤資訊:Filter clause syntax error】
-
in(field, "number1|number2")函數也等價於(field = number1) OR (field = number2),但是前者的效能會更好,同理notin也類似。
-
in/notin函數傳入的值數量過多(如數千個)時,查詢效能會顯著下降。值列表越長,過濾計算開銷越大,可能導致查詢延遲升高甚至逾時。
-
當需要傳入大量值時,將值列表拆分為多個批次分別查詢,每批控制在合理範圍內(如每批不超過500個值),再將多次查詢結果合并。