Go 1.11 はサポートが終了しており、2026 年 1 月 31 日に
非推奨になります。非推奨になると、過去に組織のポリシーを使用して以前のランタイムのデプロイを再度有効にしていた場合でも、Go 1.11 アプリケーションをデプロイできなくなります。既存の Go 1.11 アプリケーションは、
非推奨日以降も引き続き実行され、トラフィックを受信します。
サポートされている最新バージョンの Go に移行することをおすすめします。
クエリ結果の取得
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
クエリを作成した後、さまざまな取得オプションを指定して、クエリから返される結果をさらに制御できます。アプリに対するクエリの構成について詳しくは、データストア クエリをご覧ください。
クエリ結果を反復処理する
Query
値の Run
メソッドを使用してクエリ結果を反復処理する場合、Cloud Datastore は結果をバッチで取得します。デフォルトでは、各バッチに 20 件の結果が含まれています。すべての結果が返されるかリクエストがタイムアウトするまでクエリ結果の反復処理を繰り返すことができます。
クエリと一致する各エンティティを反復処理するには
Run
メソッドを使用して
Iterator
を取得し、その
Iterator
の
Next
メソッドを使用して各エンティティを処理できます。
クエリと一致するすべてのエンティティを一度に取得するには、GetAll
メソッドを使用します。
エンティティから選択したプロパティを取得する
エンティティ全体ではなくエンティティのプロパティの中から選択したもののみを取得するには、射影クエリを使用します。このタイプのクエリは、エンティティ全体を返すよりも迅速かつ低コストで実行できます。
同様に、キーのみのクエリではエンティティ全体ではなく一致するエンティティのキーのみが返されるので、時間とリソースを節約できます。この種類のクエリを作成するには、Query
を作成するときに KeysOnly
メソッドを呼び出します。
クエリに上限を設定する
クエリに対して上限を設定することで、1 つのバッチで返される結果の最大数を制御できます。次の例では、最も背の高い 5 名を Cloud Datastore から取得します。
次のステップ
- Cloud Datastore のクエリにおける一般的な制限について学習します。
- クエリの結果を一括して取得できるクエリカーソルについて学習します。
- データの整合性とそれが Cloud Datastore における異なるタイプのクエリでどのように動作するか理解します。
- Cloud Datastore のクエリの基本的な構文と構造について学習します。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-09-04 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["わかりにくい","hardToUnderstand","thumb-down"],["情報またはサンプルコードが不正確","incorrectInformationOrSampleCode","thumb-down"],["必要な情報 / サンプルがない","missingTheInformationSamplesINeed","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 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."]]