Incrementing a Firestore document field while using shards (async)
Stay organized with collections
Save and categorize content based on your preferences.
Incrementing a Firestore document field while using shards (async).
Explore further
For detailed documentation that includes this code sample, see the following:
Code sample
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],[],[[["\u003cp\u003eThis content focuses on incrementing a Firestore document field asynchronously using shards.\u003c/p\u003e\n"],["\u003cp\u003eThe provided code sample in Python demonstrates how to increment a randomly selected shard within a Firestore document.\u003c/p\u003e\n"],["\u003cp\u003eAuthentication to Firestore is necessary, requiring the setup of Application Default Credentials.\u003c/p\u003e\n"],["\u003cp\u003eThe technique used in this code sample is commonly referred to as "distributed counters", which is further explained by linked documentation.\u003c/p\u003e\n"],["\u003cp\u003eYou can browse additional code samples for Google Cloud products through the sample browser link provided.\u003c/p\u003e\n"]]],[],null,["Incrementing a Firestore document field while using shards (async).\n\nExplore further\n\n\nFor detailed documentation that includes this code sample, see the following:\n\n- [Distributed counters](https://firebase.google.com/docs/firestore/solutions/counters)\n- [Support frequent and distributed counters](/firestore/native/docs/solutions/counters)\n\nCode sample \n\nPython\n\n\nTo authenticate to Firestore, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n async def increment_counter(self, doc_ref):\n \"\"\"Increment a randomly picked shard.\"\"\"\n doc_id = random.randint(0, self._num_shards - 1)\n\n shard_ref = doc_ref.collection(\"shards\").document(str(doc_id))\n return await shard_ref.update({\"count\": firestore.Increment(1)})\n\nWhat's next\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=firestore)."]]