Firestore批处理-需要一次以上写入的操作



TL;DR-有一些约定/有效负载/操作,需要进行一次以上的批处理写入。

我突然想到,当我向batch添加set操作时,对于使用firestoreserverTimstamp功能的对象,它需要2次写入操作,而不是1次。找不到任何相关文档。问题是,如果在代码中使用本地计数器包装firestore批次,以避免达到500的阈值,则可能会错过计算批次大小。

在我的例子中,我使用的是Golang firestore sdk(但我相信这个问题对所有其他sdk来说都很常见,因为它源于firestore的基本机制(

batch.Set(ctx, docRef, struct {
LastUpdate time.Time `firestore:"lastUpdate,serverTimestamp"`
}{}, firestore.MergeAll)
--> batch.writes was increased by 2 writes rather than 1

我的问题是,是否有其他特殊的firestore值/操作等可能也需要进行一次以上的批量写入操作?还有人能为这个问题提出解决办法吗?

所谓的字段转换操作实际上可能需要在服务器上执行多个写入操作,从而降低了在批处理写入或事务中可以执行的逻辑写入操作的容量。如果我记得是正确的,那么在这种情况下,您只会因一次写入操作而被收取费用。

从我之前给出的答案来看;场变换";在Firestore?,似乎可用的字段转换操作有setToServerValue(您使用的服务器时间戳(、incrementappendMissingElementsremoveAllFromArraymaximumminimum。我不确定最后两个是否在任何SDK上公开。

最新更新