跳到主要内容

JSON 操作符

Zilliz Cloud 支持用于查询和过滤 JSON 字段的高级操作符,使其成为管理复杂结构化数据的完美工具。这些操作符可实现对 JSON 文档的高效查询,允许您根据 JSON 字段中的特定元素、值或条件检索实体。本节将指导您在 Zilliz Cloud 中使用特定于 JSON 的操作符,并提供实际示例来说明其功能。

说明

JSON 字段无法处理复杂的嵌套结构,而是将所有嵌套结构视为纯字符串。因此,在使用 JSON 字段时,建议避免过深的嵌套,并确保数据结构尽可能扁平,以获得最佳性能。

支持的 JSON 操作符

Zilliz Cloud 提供了几个强大的 JSON 操作符,可帮助过滤和查询 JSON 数据,这些操作符包括:

下面,我们将结合示例来了解如何在实际场景下使用这些操作符。

JSON_CONTAINS

该操作符会检查 JSON 字段中是否存在特定元素或子数组。当你想确保一个 JSON 数组或对象包含一个特定值时,就可以使用 JSON_CONTAINS 操作符。

示例

假设 JSON 字段 product 中有名为 tags 的键,可以使用如下过滤表达式找出 tags 键包含了 sale 的所有 Entity。

python
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains(product["tags"], "sale")'

JSON_CONTAINS_ALL

该操作符可确保目标字段中包含指定 JSON 表达式的所有元素。当需要匹配 JSON 数组中的多个值时,就可以使用 JSON_CONTAINS_ALL 操作符。

示例

继续使用上一个示例设定的场景,您可以使用如下过滤表达式找出 tags 键同时包含了 electronicssalenew 的所有 Entity。

python
# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter = 'json_contains_all(product["tags"], ["electronics", "sale", "new"])'

JSON_CONTAINS_ANY

该操作符可过滤字段中至少存在一个 JSON 表达式成员的实体。当您想根据多个可能值中的任意一个值来匹配实体时,就可以使用 JSON_CONTAINS_ANY 操作符。

示例

Let’s say you want to filter products that have at least one of the tags "electronics", "sale", or "new". You can use the json_contains_any operator to achieve this.

假设您需要过滤出 tags 键包含了 electronicssalenew 中任意一个 tag 的所有 Entity,可以使用如下过滤表达式。

python
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains_any(product["tags"], ["electronics", "new", "clearance"])'

在这种情况下 Zilliz Cloud 将返回 tags 列表中至少包含 ["electronics", "new", "clearance"] 中任意一个元素的所有 Entity,包括那些 tags 键中仅包含了上述三个 tag 中的任意一个的 Entity。