You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cosmos DB:创建文档时如何将_ts存储到另一个属性中?

问题

我在插入新文档时,希望Cosmos能自动将_ts赋值到文档的另一个属性中。我了解可以通过存储过程实现,但这会增加RU成本。

脚本使用说明:与查询一样,存储过程和触发器会根据执行操作的复杂度消耗请求单位(RU)。开发应用时,请检查请求费用标头,以更好地了解每个操作消耗的RU容量。

是否存在其他复制_ts的方法?我这么做的原因是为了追踪文档的原始插入时间,而_ts会随每次文档变更更新。我希望能配置容器,让Azure在单独的系统属性中记录原始插入时间。

可行方案

目前Azure Cosmos DB没有原生支持自动把初始_ts复制到自定义属性或额外系统属性的配置项,但可以通过以下几种低RU成本的方式实现需求:

  • 客户端插入时手动赋值:在首次写入文档前,直接生成UTC时间戳并写入自定义字段(如createdAt)。这种方式完全不需要额外的服务器端操作,RU消耗和普通插入一致,是成本最低的方案。只需确保仅在首次插入时设置该字段,后续更新操作不修改它即可。
  • 使用预触发器(Pre Trigger):相比独立存储过程,预触发器与插入操作绑定执行,仅需在插入前执行少量逻辑写入时间戳。可以在触发器中调用getCurrentTimestamp()函数获取当前时间,写入自定义字段,其RU消耗远低于单独调用存储过程。
  • 利用变更捕获(Change Feed):若无法在写入时处理,可通过Change Feed监听新插入的文档,在捕获到插入事件时将当时的_ts值写入自定义字段。这种方式适合批量场景,但会存在一定延迟,且需要额外资源消费Change Feed,不过RU消耗相对可控。

需要注意的是,Cosmos DB的系统属性中没有专门记录原始插入时间的字段,必须通过自定义字段来实现该追踪需求。

内容的提问来源于stack exchange,提问作者user246392

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:09:24