さまざまな検索の例を以下に示します。
Bucket 内の全 Object の取得
まずは、最も単純な例として、Bucket 内の全てのオブジェクトを取得する検索を考えます。
全オブジェクト取得のためには、"all" 検索に相当する KiiQuery インスタンスを作成します。これは KiiQuery.queryWithClause()
を何の KiiClause オブジェクトも渡さずに実行することにより実現できます。検索対象 Bucket の executeQuery()
メソッドを、作成した "all" クエリを渡して実行すると、Bucket 内の全てのオブジェクトが返されます。別の方法として、クエリとして null を指定して executeQuery()
メソッドを実行しても同じ結果となります。
-
-
期待どおりに取得できない場合、スコープの違い もご確認ください。
複数条件の検索
次に、以下の条件でオブジェクトを検索するケースを考えます。
- "gender" プロパティが "Female"、かつ "age" が 18 より大きい
- 検索結果の並びは、"age" プロパティの値で昇順にソートされている
- 10 件ごと取得する
次のコードは上記条件のクエリを構築します。
-
-
位置情報による検索
次に、位置情報に基づく Object 検索を行う例を挙げます。
まず、以下のように "location" というフィールドに GeoPoint を持つ Object が存在するものとします。
-
-
GeoBox(長方形エリア)による Object 検索を行うには、以下の様な処理を行います。
-
-
この例のように、GeoBox の検索条件は北東点と南西点を表す GeoPoint を指定して geoBox()
メソッドを実行することにより定義します。
次に、GeoDistance(円エリア)による Object 検索を行う処理例を以下に示します。この例では 2 つの GeoDistance を定義しており、これら 2 つの GeoDistance が交わるエリアにマッチする Object を検索しています。また、検索結果を片方の GeoDistance の中心点より近い順にソートしています。
-
-
ここでは以下の処理が行われています。
- 中心点を表す GeoPoint、半径(メートル)、中心点からの距離格納用フィールド(オプショナル)を指定して
geoDistance()
メソッドを実行し、GeoDistance の検索条件を定義。
- 2 つの GeoDistance を
and()
メソッドで結合した KiiClause
インスタンスを用いて KiiQuery
インスタンスを作成。
KiiQuery
インスタンスの sortByAsc()
メソッドを実行して、ソート順序を指定。
KiiQuery
インスタンスを指定して検索対象 Bucket の executeQuery()
メソッドを実行し、検索を実施。
- 検索結果をパース。
GeoDistance による検索を行った場合、検索にマッチした Object のそれぞれに対して、中心点からの距離(メートル)を Kii Cloud にセットさせることができます。今回の例では、GeoDistance1 の中心点からの距離を Kii Cloud にセットさせています。
- 距離は
getDistance()
メソッド実行時に指定した距離格納用フィールドにセットされます。
- この距離を用いてソートを行う場合は、例のように "_calculated." の後に距離格納用フィールド名をアペンドした文字列を
sortByAsc()
メソッドに指定します。
- 検索結果より距離を取得するには、例のように Object の "_calculated" フィールドを
get()
メソッドで取得し、さらに距離格納用フィールドより距離を取得します。
所定キーによる検索
次に、所定キーを検索条件に使った検索の例を挙げます。
次のコードでは、ログイン中のユーザーによって作成された Object のうち、更新されていないものと 1 日以内に作成されたものの両方を取得する条件で検索しています。ユーザー ID や作成日時はここに示すような方法で比較できます。
-
-
特定のフィールド名および型による検索
特定のフィールド名および型を指定した検索の例を挙げます。Object にはさまざまなカスタムフィールドを持たせることができ、名前と型が必ずしも一様ではなくなる可能性があります。hasField()
句で検索対象を絞り込み、特定の型のフィールドを持つ Object のみを取得できます。
次のサンプルコードでは、省略可能な promotionalCode
フィールドを持つ Object のみを取得します。
-
-
Not 句による検索
Not 句による検索の例を挙げます。長方形のエリアを指定して、その外部に位置する Object を検索します。
-
-
not を含むクエリーでは、パフォーマンスが低下することがありますが、式の変形によって not の使用を回避できる場合があります。詳細は Not を含む式の変形 を参照してください。