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
相关产品推荐
相关产品推荐

