条件过滤和更新
条件更新包含条件过滤和更新两部分内容,后者目前是指对数组的更新。
1. 使用说明
对于主要的增删改查,可以通过 SetCondition
接口设置过滤条件,仅当条件满足时,才会返回查询的数据或才执行更新操作,否则返回错误码 COMMON_ERR_CONDITION_NOT_MATCHED
。
/**
@brief 设置过滤条件
@param [IN] filter 过滤条件例如:fieldValue > 4
@retval int 错误码
**/
func (r *Record) SetCondition(filter string) int { ... }
对于修改请求,除了 SetData
设置数据,还可以通过 SetOperation
接口设置更新操作,目前是指对数组的插入(PUSH)、删除(POP)、修改(SET)操作。
/**
@brief 设置附加操作
@param [IN] operation 附加操作:PUSH gameids #[-1][$=123]
@param [IN] operateOption 附加操作类型 0|1
@retval int 错误码
**/
func (r *Record) SetOperation(operation string, operateOption int32) int { ... }
上述 SetCondition、SetOperation 设置的是类 SQL 的文本,见详细语法说明。
2. 哪些请求支持条件更新?
版本大于等于 3.55.0 的 SDK 中,支持的有
- TcaplusApiGetReq
- TcaplusApiDeleteReq
- TcaplusApiReplaceReq
- TcaplusApiUpdateReq
- TcaplusApiGetByPartkeyReq
- TcaplusApiPBFieldGetReq
- TcaplusApiPBFieldUpdateReq
- TcaplusApiPBFieldIncreaseReq
- TcaplusApiListGetReq
- TcaplusApiListGetAllReq
- TcaplusApiListDeleteBatchReq
- TcaplusApiListDeleteReq
- TcaplusApiListReplaceReq
- TcaplusApiTableTraverseReq
- TcaplusApiListTableTraverseReq
有部分请求,以及 Batch 类操作,需要版本大于等于 3.64.0 才能支持,包括
- TcaplusApiIncreaseReq
- TcaplusApiUpdateByPartkeyReq
- TcaplusApiDeleteByPartkeyReq
- TcaplusApiBatchGetReq
- TcaplusApiBatchDeleteReq
- TcaplusApiBatchUpdateReq
- TcaplusApiBatchReplaceReq
在条件过滤、更新的支持下,使用 Fieldget、FieldUpdate,能够实现类 Schema-free 的用法。
更多关于条件过滤和更新的能力支持,请联系Tcaplus。
3. 注意事项
- 参数
filter
和operation
文本最大长度是1023。