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(product["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(product["tags"], ["electronics", "sale", "new"])'

此查詢將返回tags 陣列包含所有三個指定元素的所有產品:"electronics","sale", 和"new"

json_contains_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"] 中至少有一個標籤的所有產品。即使產品只有其中一個標籤,也會包含在結果中。

免費嘗試托管的 Milvus

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?