功能介绍
update() 接口用于对 DocumentSet 的部分字段进行更新。
def update( data: Document, document_set_id: str | List[str] = None, document_set_name: str | List[str] = None, filter: Filter = None, timeout: float = None ) -> Any
使用实例
注意:
支持新增字段,支持更改部分字段,但不能变更系统分配的 DocumentSet ID 字段,不要求事务完整性。
不能变更已上传的文件内容,支持通过主键(DocumentSet ID)或文件名,搭配 Filter 表达式过滤需更新的文件。
新增字段,在创建 CollectionView 时没有为这些字段设置索引,那么新增这些字段时,系统不会自动为其创建索引。
如下示例,修改文件名为
腾讯云向量数据库.md
,并满足 author 字段为 Tencent 的文件,新增字段 tag 更新字段 author 的值。import tcvectordbfrom tcvectordb.model.document import Filter, Documentfrom tcvectordb.model.enum import ReadConsistency#create a database client objectclient = tcvectordb.RPCVectorDBClient(url='http://10.0.X.X:80', username='root', key='eC4bLRy2va******************************
', read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY, timeout=30)# 指定文件上传所属的文件db = client.database('db-test-ai')coll_view = db.collection_view('coll-ai-files')res = coll_view.update(data=Document(author ='tencent', tag = '向量'),document_set_name = ['腾讯云向量数据库.md'],filter=Filter("author=\\"Tencent\\""))print(res)
如下示例,修改指定文件 ID,并满足 Filter 表达式的文件的标量字段 author 为 Tencent 的文件,并修改 author 字段为 tencent。
import tcvectordbfrom tcvectordb.model.document import Filter, Documentfrom tcvectordb.model.enum import ReadConsistency#create a database client objectclient = tcvectordb.RPCVectorDBClient(url='http://10.0.X.X:80', username='root', key='eC4bLRy2va******************************', read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY, timeout=30)# 指定文件上传所属的文件db = client.database('db-test-ai')coll_view = db.collection_view('coll-ai-files')res = coll_view.update(data=Document(author ='tencent'),document_set_id=["11793516237********"],filter=Filter("author=\\"Tencent\\""))print(res)
如下示例,修改满足 author 的 Filter 表达式的文件的字段 author 为 Tencent,并修改 author 字段为 tencent,新增字段 tag。
import tcvectordbfrom tcvectordb.model.document import Filter, Documentfrom tcvectordb.model.enum import ReadConsistency#create a database client objectclient = tcvectordb.RPCVectorDBClient(url='http://10.0.X.X:80', username='root', key='eC4bLRy2va******************************
', read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY, timeout=30)# 指定文件上传所属的文件db = client.database('db-test-ai')coll_view = db.collection_view('coll-ai-files')res = coll_view.update(data=Document(author ='tencent', tag = '向量'),filter=Filter("author=\\"Tencent\\""))print(res)
入参描述
参数名 | 参数含义 | 子参数 | 是否必选 | 配置方法及要求 |
document_set_name | 指定需更新的文件名。 | - | 否 | 支持批量更新,数据元素最大值为20。 说明: 同时配置 document_set_name 与 filter 参数,更新数据将会取二者的交集。 |
document_set_id | 指定需更新的文件 ID。 | - | 否 | 支持批量更新,数据元素最大值为20。 说明: 同时配置 document_set_id 与 filter 参数,更新数据将会取二者的交集。 |
filter | 配置 Filter 表达式过滤需更新的文件 | | 否 | 使用创建 CollectionView 指定的 Filter 索引的字段设置查询过滤表达式。Filter 表达式格式为 <field_name><operator><value>,多个表达式之间支持 and(与)、or(或)、not(非)关系。具体信息,请参见 混合检索。其中: <field_name>:表示要过滤的字段名。 <operator>:表示要使用的运算符。 string :匹配单个字符串值(=)、排除单个字符串值(!=)、匹配任意一个字符串值(in)、排除所有字符串值(not in)。其对应的 Value 必须使用英文双引号括起来。 uint64:大于(>)、大于等于(>=)、等于(=)、小于(<)、小于等于(<=)。例如:expired_time > 1623388524。 array:数组类型,包含数组元素之一(include)、排除数组元素之一(exclude)、全包含数组元素(include all)。例如,name include (\\"Bob\\", \\"Jack\\")。 <value>:表示要匹配的值。 示例: Filter('author="jerry"').And('page>20') |
data | 设置需更新的字段 | old_field | 否 | 当前已存在的字段,更新字段对应的数据。 类型:string。 字符长度要求:[1,256]。 |
| | new_field | 否 | 新增字段,并给新字段赋值。 类型:string。 字符长度要求:[1,256]。 |
出参描述
{'code': 0,'msg': 'Operation success, requestId: 16f78e1d59149c1760bafd**********','affectedCount': 1}
参数名 | 参数含义 |
affectedCount | 更新的文档数量。如果该参数返回的值为 0,说明更新无效。 |