サーバー構築不要!スマートフォンアプリ向けの新クラウド

トップ >ドキュメント >SDKガイド(Android):クエリの使い方

SDKガイド(Android)

ドキュメント内検索

クエリの使い方

このドキュメントは更新されていません。
こちらから最新版をご覧ください。

基本的な検索の利用

データ検索にはNCMBQueryクラスを利用します。

//TestClassを検索するためのNCMBQueryインスタンスを作成
NCMBQuery<NCMBObject> query = new NCMBQuery<>("TestClass");

//keyというフィールドがvalueとなっているデータを検索する条件を設定
query.whereEqualTo("key", "value");

//データストアからデータを検索
query.findInBackground(new FindCallback<NCMBObject>() {
    @Override
    public void done(List<NCMBObject> results, NCMBException e) {
        if (e != null) {

            //検索失敗時の処理
        } else {

            //検索成功時の処理
        }
    }
});

標準クラスを検索する場合のクラス名

会員やロール・ファイルなど、mobile backendに標準で存在するクラスに対して、
inQueryを用いた検索など、クラス名を指定する必要がある場合は以下をご覧ください。

クラス名 役割
user 会員管理のクラス
role ロールのクラス
file ファイルストアのクラス
installation 端末情報一覧のクラス
push プッシュ通知のクラス

クエリへの複数条件設定

以下のように、AND検索やOR検索が可能になっています。
クエリに指定できる条件については、SDKリファレンスのNCBMQueryページもご覧ください。

  • AND検索の例
//keyの値が0以上かつ、10以下のデータを検索する
NCMBQuery<NCMBObject> query = new NCMBQuery<>("TestClass");
query.whereGreaterThan("key", 0);
query.whereLessThan("key", 10);

  • OR検索
NCMBQuery<NCMBObject> queryA = new NCMBQuery<>("TestClass");
queryA.whereEqualTo("keyA", "valueA");

NCMBQuery<NCMBObject> queryB = new NCMBQuery<>("TestClass");
queryB.whereEqualTo("keyB", "valueB");

NCMBQuery orQuery = new NCMBQuery<>("TestClass");
orQuery.or(Arrays.asList(queryA, queryB));

クエリへの設定

条件に合致するデータをカウント
NCMBQuery<NCMBObject> query = new NCMBQuery<>("TestClass");
query.whereEqualTo("key", "value");
query.countInBackground(new CountCallback() {
    @Override
    public void done(int countNumber, NCMBException e) {
        if (e != null) {

            //カウントでエラーが発生した場合の処理
        } else {

            //カウントが成功した場合の処理
        }
    }
});

取得件数を指定
query.limit(10);

取得開始位置を指定
query.skip(100);

ソート
// 昇順
query.orderByAscending("createDate");

// 降順
query.orderByDescending("createDate");

配列に対するクエリ

配列のデータを持つフィールドに対して条件を設定することができます。

NCMBQuery<NCMBObject> query = new NCMBQuery<>("TestClass");

//keyというフィールドに格納されている配列のうち、指定した配列データを含むものを検索する
query.whereContainedInArray("key", Arrays.asList("value1", "value2"));

ポインタに対するクエリ

サブクエリを作成してポインタとして設定されているオブジェクトに条件を設定できます。

NCMBQuery<NCMBObject> subQuery = new NCMBQuery<>("SubClass");
subQuery.whereEqualTo("key", "value");

NCMBQuery<NCMBObject> query = new NCMBQuery<>("TestClass");

//subKeyに格納されているポインタオブジェクトのうち、subQueryに合致するものを検索する
query.whereMatchesQuery("subKey", subQuery);

includeでポインタを持つフィールドを指定すると、ポインタ先オブジェクトも一緒に取得できます。

NCMBQuery<NCMBObject> query = new NCMBQuery<>("TestClass");
query.whereEqualTo("key", "value");
query.include("post.author");

リレーションに対するクエリ

whereRelatedToメソッドを利用して、リレーション先のオブジェクトを検索することができます。

NCMBObject pointerObj = new NCMBObject("pointerClass");
pointerObj.setObjectId("testObjectId");

//リレーションを設定
NCMBObject parentObj = new NCMBObject("TestClass");
parentObj.put("relation", NCMBRelation.addRelation(Arrays.asList(pointerObj)));
parentObj.save();

//リレーション先のクラスを検索するNCMBQueryを作成
NCMBQuery<NCMBObject> subQuery = new NCMBQuery<>("SubClass");

//parentObjのrelationフィールドにリレーションとして設定されているオブジェクトを検索する
subQuery.whereRelatedTo(parentObj, "relation");

キャッシュ

version2でのキャッシュ機能は次期アップデートで対応予定です。

お探しの内容が見つからなかった場合はユーザーコミュニティ もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。

推奨画面サイズ1024×768px以上

ページの先頭へ