Цена при обновлении более одного поля одного и того же документа в транзакции Firestore

У меня есть следующая транзакция с использованием Firestore:

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);
    }
});

Мой вопрос: при обновлении, например, двух полей одного и того же документа в рамках одной транзакции, будет ли такая транзакция считаться одним или двумя документами?


person nibbana    schedule 28.05.2019    source источник


Ответы (1)


при обновлении, например, двух полей одного и того же документа в рамках одной транзакции, приведет ли такая транзакция к чтению одного или двух документов?

Неважно, сколько полей вы измените в документе за одну операцию, вы всегда будете платить за одну операцию записи. Если вы будете записывать одну за другой, вам придется выполнить две операции записи.

person Alex Mamo    schedule 28.05.2019
comment
Одна транзакция считается одной операцией или суммой обновления / установки / удаления в ее теле? Другими словами, в коде исходного вопроса транзакция будет взиматься за одно или два чтения? - person nibbana; 28.05.2019
comment
Одна транзакция считается одной операцией, если вы изменяете поля в одном документе. В вашем случае транзакция будет стоить вам ровно одной операции чтения. - person Alex Mamo; 28.05.2019