How to increment existing number field in Cloud Firestore

Sangeeth Mukundan picture Sangeeth Mukundan · Jun 8, 2018 · Viewed 19.2k times · Source

I have a field which indicates the number of transactions. I would like to increment it by 1 as soon as a transaction occurs. I could'nt find any method to directly execute this.

One method is to get the user first and then update the field with the received value + 1, but this is too lengthy and slow.

Can anyone tell me any other feasible method?

Answer

Frank van Puffelen picture Frank van Puffelen · Jun 8, 2018

Firestore now has a specific operator for this called FieldValue.increment(). By applying this operator to a field, the value of that field can be incremented (or decremented) as a single operation on the server.

From the Firebase documentation on incrementing a numeric value:

var washingtonRef = db.collection('cities').doc('DC');

// Atomically increment the population of the city by 50.
washingtonRef.update({
    population: firebase.firestore.FieldValue.increment(50)
});

So this example increments the population by 50, no matter what is current value is. If the field doesn't exist yet (or is not a number), it is set to 50 in this case.