Como recuperar os resultados da consulta
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Após a criação de uma consulta, é possível especificar várias opções de recuperação para controlar ainda mais os resultados retornados.
Acesse Consultas do Datastore para ver mais informações sobre a estruturação de consultas para o aplicativo.
Como iterar pelos resultados de consulta
Ao iterar os resultados de uma consulta usando o método Run
de um valor Query
, o Cloud Datastore recupera os resultados em lotes. Por padrão, cada lote contém 20 resultados. É possível continuar iterando pelos resultados da consulta até que todos sejam retornados ou a solicitação expire.
Para iterar cada entidade que corresponde à consulta, use o método
Run
para receber um
Iterator
, com o qual é possível percorrer cada entidade usando o método
Next
do
Iterator
.
Para recuperar todas as entidades que correspondem à consulta de uma só vez, use o método GetAll
.
Como recuperar propriedades selecionadas de uma entidade
Para recuperar apenas as propriedades selecionadas de uma entidade, e não toda a entidade, use uma consulta de projeção. Esse tipo de consulta é executado com maior rapidez e custa menos que uma consulta que retorna entidades completas.
Da mesma forma, uma consulta somente de chaves economiza tempo e recursos ao retornar apenas as chaves das entidades correspondentes, e não as entidades completas. Para criar esse tipo de consulta, chame o método KeysOnly
ao criar Query
:
Como definir um limite para a consulta
Você pode especificar um limite para a consulta para controlar o número máximo de resultados retornados em um lote. No exemplo a seguir, recuperamos as cinco pessoas mais altas do Cloud Datastore:
A seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-04 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-04 UTC."],[[["\u003cp\u003eThis API is designed for first-generation runtimes, with a migration guide available for upgrading to App Engine Go 1.12+ second-generation runtimes.\u003c/p\u003e\n"],["\u003cp\u003eQuery results can be iterated through using the \u003ccode\u003eRun\u003c/code\u003e method, which retrieves results in batches, or retrieved all at once with the \u003ccode\u003eGetAll\u003c/code\u003e method.\u003c/p\u003e\n"],["\u003cp\u003eProjection queries allow for the retrieval of selected properties from an entity, which is faster and more cost-effective than retrieving full entities.\u003c/p\u003e\n"],["\u003cp\u003eKeys-only queries, created by calling the \u003ccode\u003eKeysOnly\u003c/code\u003e method, save resources by only returning the keys of matching entities.\u003c/p\u003e\n"],["\u003cp\u003eYou can limit the number of results returned by a query in a single batch by specifying a limit using the \u003ccode\u003eLimit\u003c/code\u003e method.\u003c/p\u003e\n"]]],[],null,["# Retrieving query results\n\n| This API is supported for first-generation runtimes and can be used when [upgrading to corresponding second-generation runtimes](/appengine/docs/standard/\n| go\n| /services/access). If you are updating to the App Engine Go 1.12+ runtime, refer to the [migration guide](/appengine/migration-center/standard/migrate-to-second-gen/go-differences) to learn about your migration options for legacy bundled services.\n\nAfter constructing a query, you can specify a number of retrieval options to\nfurther control the results it returns.\nSee [datastore queries](/appengine/docs/legacy/standard/go111/datastore/queries) for more information on structuring queries for your app.\n\nIterating through query results\n-------------------------------\n\nWhen iterating through the results of a query using the [`Run`](/appengine/docs/legacy/standard/go111/datastore/reference#Query.Run) method of a [`Query`](/appengine/docs/legacy/standard/go111/datastore/reference#Query) value, Cloud Datastore retrieves the results in batches. By default each batch contains 20 results. You can continue iterating through query results until all are returned or the request times out.\nTo iterate over each entity that matches your query, use the [`Run`](/appengine/docs/legacy/standard/go111/datastore/reference#Query.Run) method to obtain an [`Iterator`](/appengine/docs/legacy/standard/go111/datastore/reference#Iterator), with which you can step through each entity using the `Iterator`'s [`Next`](/appengine/docs/legacy/standard/go111/datastore/reference#Iterator.Next) method.\n\n\u003cbr /\u003e\n\n q := datastore.NewQuery(\"Person\")\n t := q.Run(ctx)\n for {\n \tvar p Person\n \tk, err := t.Next(&p)\n \tif err == datastore.Done {\n \t\tbreak // No further entities match the query.\n \t}\n \tif err != nil {\n \t\tlog.Errorf(ctx, \"fetching next Person: %v\", err)\n \t\tbreak\n \t}\n \t// Do something with Person p and Key k\n \tdoSomething(k, p)\n }\n\nTo retrieve all entities matching your query at once, use the [`GetAll`](/appengine/docs/legacy/standard/go111/datastore/reference#Query.GetAll) method. \n\n q := datastore.NewQuery(\"Person\")\n var people []Person\n keys, err := q.GetAll(ctx, &people)\n if err != nil {\n \tlog.Errorf(ctx, \"fetching people: %v\", err)\n \treturn\n }\n for i, p := range people {\n \tk := keys[i]\n \t// Do something with Person p and Key k\n \tdoSomething(k, p)\n }\n\nRetrieving selected properties from an entity\n---------------------------------------------\n\nTo retrieve only selected properties of an entity rather than the entire entity, use a [*projection query*](/appengine/docs/legacy/standard/go111/datastore/projectionqueries). This type of query runs faster and costs less than one that returns complete entities.\n\nSimilarly, a [*keys-only query*](/appengine/docs/legacy/standard/go111/datastore/queries#keys-only_queries) saves time and resources by returning just the keys to the entities it matches, rather than the full entities themselves. To create this type of query, call the `KeysOnly` method when constructing the `Query`.: \n\n q := datastore.NewQuery(\"Person\").KeysOnly()\n\nSetting a limit for your query\n------------------------------\n\nYou can specify a *limit* for your query to control the maximum number of results returned in one batch. The following example retrieves the five tallest people from Cloud Datastore: \n\n q := datastore.NewQuery(\"Person\").Order(\"-Height\").Limit(5)\n var people []Person\n _, err := q.GetAll(ctx, &people)\n // check err\n\n for _, p := range people {\n \tlog.Infof(ctx, \"%s %s, %d inches tall\", p.FirstName, p.LastName, p.Height)\n }\n\nWhat's next?\n------------\n\n- Learn the [common restrictions](/appengine/docs/legacy/standard/go111/datastore/query-restrictions) for queries on Cloud Datastore.\n- Learn about [query cursors](/appengine/docs/legacy/standard/go111/datastore/query-cursors), which allow an application to retrieve a query's results in convenient batches.\n- [Understand data consistency](/appengine/docs/legacy/standard/go111/datastore/data-consistency) and how data consistency works with different types of queries on Cloud Datastore.\n- Learn the [basic syntax and structure of queries](/appengine/docs/legacy/standard/go111/datastore/queries) for Cloud Datastore."]]