在 milvus 中使用 `collection.delete()` 删除实体时,若主键(如 `obj_id`)为字符串类型,过滤表达式必须将值用单引号包裹;否则会因表达式解析失败抛出 `failed to create expr plan` 异常。
在 Milvus 中执行条件删除操作时,delete() 方法依赖 SQL-like 表达式(即 expr 参数)进行行级筛选。该表达式需严格符合 Milvus 的表达式语法规则:所有字符串类型的字段值必须用单引号(’)包裹,而数字类型可省略。从报错信息 expr = obj_id in [65ce930d39989b871863b5dd] 可明显看出:65ce930d39989b871863b5dd 是 MongoDB ObjectId 转换来的十六进制字符串,但表达式中未加引号,导致 Milvus 将其误判为标识符或数字字面量,最终解析失败。
✅ 正确写法(适配字符串主键):