Firebase 如何在交易内对同一文档中的多个更新进行计费

时间:2021-03-31 19:06:00

标签: google-cloud-firestore

我有与 Pricing when updating more than one field of the same document within a Firestore transaction 中描述的相同的问题,但接受的答案对我来说似乎模棱两可。 OP 询问事务内同一文档中多个更新操作的定价,接受的答案是:

<块引用>

无论您在一次操作中更改了文档中的多少个字段,您始终需要进行一次写入操作。如果您一个接一个地进行写入,您将需要承担两次写入操作。

但是在答案讨论中,接受的答案作者说:

<块引用>

只要您修改同一文档中的字段,一次交易就被视为一次操作。在您的情况下,交易将花费您一次读取操作。

OP 示例显示他在事务内的同一个文档中执行两次更新:


mDb.runTransaction(new Transaction.Function<Void>() {
    @Override
    public Void apply(final Transaction transaction) throws FirebaseFirestoreException {
        DocumentReference documentReference = mDb.collection("collectionOne").document("documentOne");
        /*
            some code
        */
        transaction.update(documentReference, App.getResourses().getString(R.string.field_one), FieldValue.increment(1));
        transaction.update(documentReference, App.getResourses().getString(R.string.field_two), FieldValue.increment(1));
        return null;
    }
}).addOnSuccessListener(new OnSuccessListener<Void>() {
    @Override
    public void onSuccess(Void aVoid) {
        Log.d("Debugging", "Transaction correctly executed.");
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
        Log.w("Debugging", "Transaction failure.", e);
    }
});

这对我来说似乎模棱两可,因为答案作者说:

<块引用>

...如果您一个接一个地进行写入,您将需要执行两次写入操作。

这似乎正是 OP 示例所显示的内容,但后来它也说:

<块引用>

...在您的情况下,交易将花费您一次读取操作。

最后,在上面的例子中 - 在一个交易中的同一个文档中的两次更新 - 价格是两次写入还是一次写入,因为它们是在同一个文档和交易块中进行的?

0 个答案:

没有答案
相关问题