JSON 運算符號
Milvus 支援先進的運算符號,用於查詢和過濾 JSON 欄位,使其成為管理複雜、結構化數據的完美工具。這些運算符能夠高效地查詢 JSON 文檔,允許您根據 JSON 欄位中的特定元素、值或條件檢索實體。本節將引導您在 Milvus 中使用 JSON 特定的運算符號,並提供實例來說明它們的功能。
JSON 欄位無法處理複雜的嵌套結構,並將所有嵌套結構視為純字串。因此,在使用 JSON 欄位時,建議避免過深的巢狀結構,並確保您的資料結構盡可能扁平,以獲得最佳效能。
可用的 JSON 運算符
Milvus 提供了幾個強大的 JSON 運算符,幫助過濾和查詢 JSON 資料,這些運算符有
JSON_CONTAINS(identifier, expr)
:篩選在欄位中找到指定 JSON 表達式的實體。JSON_CONTAINS_ALL(identifier, expr)
:確保指定的 JSON 表達式的所有元素都存在於欄位中。JSON_CONTAINS_ANY(identifier, expr)
:篩選至少有一個 JSON 表達式元素存在於欄位中的實體。
讓我們以範例來探討這些運算符號,看看它們如何應用在實際情況中。
JSON_CONTAINS
json_contains
運算符檢查 JSON 欄位中是否存在特定元素或子陣列。當您想要確保 JSON 陣列或物件包含特定值時,這個運算符很有用。
範例
假設您有一個產品集合,每個產品都有一個tags
欄位,其中包含一個字串的 JSON 陣列,例如["electronics", "sale", "new"]
。您想要篩選具有標籤"sale"
的產品。
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains(tags, "sale")'
在這個範例中,Milvus 會返回所有tags
欄位包含"sale"
元素的產品。
json_contains_all
json_contains_all
運算子確保指定 JSON 表達式的所有元素都出現在目標欄位中。當您需要匹配 JSON 陣列中的多個值時,它特別有用。
範例
繼續使用產品標籤的情境,如果您想找出所有標籤為"electronics"
,"sale"
, 和"new"
的產品,您可以使用json_contains_all
運算符號。
# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter = 'json_contains_all(tags, ["electronics", "sale", "new"])'
此查詢將返回tags
陣列包含所有三個指定元素的所有產品:"electronics"
,"sale"
, 和"new"
。
json_cotains_any
json_contains_any
運算符號會過濾至少有一個 JSON 表達式成員存在於欄位中的實體。當您要根據多個可能值中的任何一個來匹配實體時,這非常有用。
範例
假設您想要過濾至少有一個標記"electronics"
,"sale"
, 或"new"
的產品。您可以使用json_contains_any
運算符號來達成這個目的。
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains_any(tags, ["electronics", "new", "clearance"])'
在這種情況下,Milvus 會返回清單["electronics", "new", "clearance"]
中至少有一個標籤的所有產品。即使產品只有其中一個標籤,也會包含在結果中。