Obtener un documento de Firestore mientras se usan fragmentos
Organízate con las colecciones
Guarda y clasifica el contenido según tus preferencias.
Obtener un documento de Firestore mientras se usan fragmentos
Investigar más
Para obtener documentación detallada que incluya este código de muestra, consulta lo siguiente:
Código de ejemplo
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Es difícil de entender","hardToUnderstand","thumb-down"],["La información o el código de muestra no son correctos","incorrectInformationOrSampleCode","thumb-down"],["Me faltan las muestras o la información que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],[],[[["\u003cp\u003eThis document provides code samples in multiple languages (C#, Go, Node.js, PHP, Python, Ruby) for retrieving a total count from a Firestore document that uses sharding.\u003c/p\u003e\n"],["\u003cp\u003eThe core functionality involves iterating through a collection of "shards" within a document and summing up the "count" value from each shard to obtain the total.\u003c/p\u003e\n"],["\u003cp\u003eEach code sample requires the user to set up Application Default Credentials for Firestore authentication in their local development environment, which is further explained in the link provided.\u003c/p\u003e\n"],["\u003cp\u003eThe document also contains links to more detailed documentation on the topic of distributed counters to enhance the user's understanding of the use-case.\u003c/p\u003e\n"]]],[],null,["Getting a Firestore document while using shards\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\nC#\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 /// \u003csummary\u003e\n /// Get total count across all shards.\n /// \u003c/summary\u003e\n /// \u003cparam name=\"docRef\"\u003eThe document reference \u003csee cref=\"DocumentReference\"/\u003e\u003c/param\u003e\n /// \u003creturns\u003eThe \u003csee cref=\"int\"/\u003e\u003c/returns\u003e\n private static async Task\u003cint\u003e GetCountAsync(DocumentReference docRef)\n {\n var snapshotList = await docRef.Collection(\"shards\").GetSnapshotAsync();\n return snapshotList.Sum(shard =\u003e shard.GetValue\u003cint\u003e(\"count\"));\n }\n\nGo\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\n // getCount returns a total count across all shards.\n func (c *Counter) getCount(ctx context.Context, docRef *firestore.DocumentRef) (int64, error) {\n \tvar total int64\n \tshards := docRef.Collection(\"shards\").Documents(ctx)\n \tfor {\n \t\tdoc, err := shards.Next()\n \t\tif err == iterator.Done {\n \t\t\tbreak\n \t\t}\n \t\tif err != nil {\n \t\t\treturn 0, fmt.Errorf(\"Next: %w\", err)\n \t\t}\n\n \t\tvTotal := doc.Data()[\"Count\"]\n \t\tshardCount, ok := vTotal.(int64)\n \t\tif !ok {\n \t\t\treturn 0, fmt.Errorf(\"firestore: invalid dataType %T, want int64\", vTotal)\n \t\t}\n \t\ttotal += shardCount\n \t}\n \treturn total, nil\n }\n\nNode.js\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 function getCount(docRef) {\n const querySnapshot = await docRef.collection('shards').get();\n const documents = querySnapshot.docs;\n\n let count = 0;\n for (const doc of documents) {\n count += doc.get('count');\n }\n return count;\n }\n\nPHP\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 $result = 0;\n $docCollection = $db-\u003ecollection('samples/php/distributedCounters')-\u003edocuments();\n foreach ($docCollection as $doc) {\n $result += $doc-\u003edata()['Cnt'];\n }\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 def get_count(self, doc_ref):\n \"\"\"Return a total count across all shards.\"\"\"\n total = 0\n shards = doc_ref.collection(\"shards\").list_documents()\n for shard in shards:\n total += shard.get().to_dict().get(\"count\", 0)\n return total\n\nRuby\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 # project_id = \"Your Google Cloud Project ID\"\n # collection_path = \"shards\"\n\n require \"google/cloud/firestore\"\n\n firestore = Google::Cloud::https://cloud.google.com/ruby/docs/reference/google-cloud-firestore-admin-v1/latest/Google-Cloud-Firestore.html.https://cloud.google.com/ruby/docs/reference/google-cloud-firestore/latest/Google-Cloud-Firestore.html project_id: project_id\n\n shards_ref = firestore.https://cloud.google.com/ruby/docs/reference/google-cloud-firestore/latest/Google-Cloud-Firestore-Client.html collection_path\n\n count = 0\n shards_ref.get do |doc_ref|\n count += doc_ref[:count]\n end\n\n puts \"Count value is #{count}.\"\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)."]]