跳到主要内容

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()},
)
最低 SDK 版本v2.6.x