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

Firestore中对同一文档多次batch.set()算几次文档写入?

Firestore Batch 中同一文档多次 set() 的写入计数问题

问题1解答

当你在同一个batch里对同一个文档多次调用batch.set()(不管是否携带merge参数),Firestore只会算作一次文档写入操作,只会收取一次写入费用。

问题2解答

先看你的代码片段:

function setShards(batch, docRef, numShards) { 
  batch.set(docRef, { numShards } , { merge: true }); 
}
const batch = firestore.batch();
batch.set(docRef, {data});
setShards(batch, docRef, 10); // 这里补全了你代码里漏传的batch参数,不影响核心逻辑
batch.commit();

虽然你在同一个batch里对docRef执行了两次set()操作,但Firestore会自动合并针对同一文档的所有批量操作,最终只执行一次写入,所以只会被算作一次文档写入。

补充说明

Firestore的batch机制会对同一文档的多次写操作做合并处理:它会把你对该文档的所有set/update/delete操作整合为最终的文档状态,然后一次性提交这个最终状态。不会单独执行每一次操作,自然也就不会产生多次写入计数。

举个更直观的例子:如果你的batch里先set(doc, {name: "Alice"}),再set(doc, {age: 30}, {merge: true}),最终文档会是{name: "Alice", age: 30},而Firestore只会统计这一次合并后的写入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:02:33