クエリを作成した後、さまざまな取得オプションを指定して、クエリから返される結果をさらに制御できます。アプリに対するクエリの構成について詳しくは、データストア クエリをご覧ください。
単一のエンティティを取得する
クエリと一致する単一のエンティティを取得するには、Query.get()
(または GqlQuery.get()
)メソッドを使用します。
q = Person.all()
q.filter("last_name =", target_last_name)
result = q.get()
このメソッドは、インデックスで最初に見つかった、クエリと一致する結果を返します。
クエリ結果を反復処理する
Query
または GqlQuery
オブジェクトの run()
メソッドを使用してクエリ結果を反復処理する場合、Cloud Datastore は結果をバッチで取得します。デフォルトでは各バッチに 20 件の結果が含まれますが、この値は、このメソッドの batch_size
パラメータを使用して変更できます。すべての結果が返されるかリクエストがタイムアウトするまでクエリ結果の反復処理を繰り返すことができます。
エンティティから選択したプロパティを取得する
エンティティ全体ではなくエンティティのプロパティの中から選択したもののみを取得するには、射影クエリを使用します。このタイプのクエリは、エンティティ全体を返すよりも迅速かつ低コストで実行できます。
同様に、キーのみのクエリではエンティティ全体ではなく一致するエンティティのキーのみが返されるので、時間とリソースを節約できます。このタイプのクエリを作成するには、クエリ オブジェクトを作成する際に keys_only=True
を設定します。
q = Person.all(keys_only=True)
クエリに上限を設定する
クエリに対して上限を設定することで、1 つのバッチで返される結果の最大数を制御できます。次の例では、最も背の高い 5 名を Cloud Datastore から取得します。
q = Person.all()
q.order("-height")
for p in q.run(limit=5):
print "%s %s, %d inches tall" % (p.first_name, p.last_name, p.height)
次のステップ
- Cloud Datastore のクエリにおける一般的な制限について学習します。
- クエリの結果を一括して取得できるクエリカーソルについて学習します。
- データの整合性とそれが Cloud Datastore における異なるタイプのクエリでどのように動作するか理解します。
- Cloud Datastore のクエリの基本的な構文と構造について学習します。