使用PyMilvus 2.2.13查询含指定元素的JSON数组嵌入向量
解决PyMilvus 2.2.13中JSON数组元素的查询问题
你出错的核心原因是用错了函数:json_contains的作用是判断JSON对象是否包含指定的JSON子集,而非检查数组内是否存在某个元素。要实现你的需求,应该使用专门针对数组的json_array_contains函数。
正确的查询代码
self.collection.query( expr='json_array_contains(metadata["list_field"], "A")', output_fields=['metadata'] )
如果需要动态传入目标元素,可以用f-string拼接表达式:
target_item = "A" self.collection.query( expr=f'json_array_contains(metadata["list_field"], "{target_item}")', output_fields=['metadata'] )
注意事项
- 确认你的集合中
metadata字段的类型是DataType.JSON(创建集合时需明确指定)。 - 表达式里的字符串值和JSON路径的键名必须用双引号包裹,这是Milvus表达式语法的强制要求。
内容的提问来源于stack exchange,提问作者Natalie
相关产品推荐
相关产品推荐

