upsert()
此操作可在指定 Collection 中插入新数据或更新现有数据,并支持对数组字段进行可选的部分更新。
Notes
外部 Collection 不支持此操作。
请求语法
python
upsert(
collection_name: str,
data: Union[Dict, List[Dict]],
timeout: Optional[float] = None,
partition_name: Optional[str] = "",
**kwargs,
) -> MutationResult
参数:
-
collection_name (str) -
[必需]
要执行 upsert 操作的 Entity 所在 Collection 的名称。 -
data (Union[Dict, List[Dict]]) -
[必需]
要执行 upsert 的 Entity。必要时,可迭代输入会转换为列表。 -
timeout (Optional[float]) -
默认值:None
等待 RPC 的最长时间,单位为秒。此值会覆盖客户端的默认设置。 -
partition_name (Optional[str]) -
默认值:""
要执行 upsert 操作的 Entity 所在 Partition 的名称。 -
kwargs (Any) -
其他 upsert 选项。-
partial_update (bool) -
默认值:False
用于控制是否仅更新指定字段的标志。当该值为True时,未指定的字段保持不变。 -
field_ops (Optional[Dict[str, Any]]) -
默认值:None
部分更新期间应用的逐字段合并操作。每个值可以是FieldOp工厂结果、array_append、array_remove或replace,也可以是FieldPartialUpdateOp消息。除replace之外的任何操作都会启用部分更新。
-
返回类型:
MutationResult
返回:
变更结果,包含 upsert 操作报告的主键和计数。
异常:
- MilvusException
当服务器拒绝请求或 RPC 失败时抛出。请查看服务器错误消息以获取确切的失败详情。
示例
演示 upsert 的用法。
python
from pymilvus import FieldOp, MilvusClient
client = MilvusClient(uri="YOUR_CLUSTER_ENDPOINT")
client.upsert(
collection_name="book_chunks",
data=[{"id": 1, "vector": [0.1, 0.2, 0.3], "tags": ["science"]}],
field_ops={"tags": FieldOp.array_append()},
)