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

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

SDKガイド(Unity)

ドキュメント内検索

クエリの使い方

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

基本的な検索の利用

mobile backend上に保存されているデータを検索する場合には、NCMBQueryクラスを利用します。
以下のサンプルでは、QueryTestクラスにて、Scoreが7であるオブジェクトを取得しています。
WhereEqualToメソッドで検索条件を設定し、
FindAsyncメソッドで、指定された条件のオブジェクトを検索しています。

//QueryTestを検索するクラスを作成
NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("QueryTest");
//Scoreの値が7と一致するオブジェクト検索
query.WhereEqualTo ("Score", 7);
query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => {
    if (e != null) {
        //検索失敗時の処理
    } else {
        //Scoreが7のオブジェクトを出力
        foreach (NCMBObject obj in objList) {
            Debug.Log ("objectId:" + obj.ObjectId);
        }
    }
});

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

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

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

検索条件を設定する

基本的な検索条件

主な検索条件は以下のとおりです。

// Score = 7 
query.WhereEqualTo("Score",7);

// Score != 7
query.WhereNotEqualTo ("Score", 7);

// Score < 5
query.WhereLessThan("Score",5);

// Score <= 5
query.WhereLessThanOrEqualTo("Score",5);

// Score > 5
query.WhereGreaterThan("Score",5);

// Score >= 5
query.WhereGreaterThanOrEqualTo("Score",5);

検索条件を配列形式で指定する

検索条件に複数の値を配列形式で設定し、
そのうちのいずれかと一致するオブジェクトを検索することができます。

NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("QueryTest");
List<int> request =  new List<int> { 1, 5, 10};

//1,5,10のいずれかと一致するオブジェクトを検索
query.WhereContainedIn("Score",request);

//1,5,10のいずれとも一致しないオブジェクトを検索
query.WhereNotContainedIn("Score",request);

//配列に1,5,10のいずれかが含まれているオブジェクトを検索
query.WhereContainedInArray("ScoreArray",request);

//配列に1,5,10のいずれも含まないオブジェクトを検索
query.WhereNotContainedInArray("ScoreArray",request);

//配列に1,5,10をすべて含むオブジェクトを検索
query.WhereContainsAll("ScoreArray",request);

limit、skip、ソートを設定する

limitやskipを使って、取得件数や取得開始位置を指定することができます。
また、複数のオブジェクトがある場合はソートすることも可能です。

//取得件数の指定
query.Limit = 5;

//取得開始位置の指定
query.Skip = 6;

// 昇順
query.OrderByAscending ("Score");

// Scoreでの昇順でソートしたあと、Ageでの昇順でソートする
NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("SortTest");
query.OrderByAscending ("Score");   //Scoreを昇順で並べ替え
query.AddAscendingOrder ("Age");    //さらにAgeを昇順で並べ替え

// 降順
query.OrderByDescending ("Score");

// Scoreでの降順でソートしたあと、Ageでの降順でソートする
NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("SortTest");
query.OrderByDescending ("Score");  //Scoreを降順で並べ替え
query.AddDescendingOrder ("Age");   //さらにAgeを降順で並べ替え

参照先オブジェクトの取得

あるオブジェクトへの参照(ポインタ)を保存しているフィールドを、Includeで指定することで、
参照先のオブジェクトを親オブジェクトとともに取得することが可能です。

// Parentクラスのうち、objectIdがxxxxxxxxのオブジェクトを取得する
// このとき、Childフィールドに格納した子オブジェクトも取ってくるよう指定
NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("Parent");
query.WhereEqualTo("objectId","xxxxxxxx");
query.Include("Child");

query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => {

// 取得成功時
if (e == null) {
  foreach( NCMBObject obj in objList ){
    NCMBObject child = (NCMBObject)obj["Child"];
    Debug.Log( child.ObjectId );
  }
}

// 取得失敗時
 else {

 }
});

クラスの件数を取得する

CountAsyncメソッドを利用することで、
クエリの検索条件に当てはまるデータの件数を取得することができます。

条件を指定しない場合はクエリ作成時に指定したクラスの全件数が返却されます。

NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("QueryTest");
query.WhereEqualTo("Score",7);
query.CountAsync((int count , NCMBException e )=>{
    if(e != null){
        //件数取得失敗時の処理
    }else{
        //件数を出力
        Debug.Log("件数 : "+ count);
    }
});

AND検索/OR検索について

オペランドを複数指定することで、AND検索を行うことができます。
以下の例では、Scoreが30を超え、50未満の値となるよう条件を設定しています。

NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("QueryTest");
// Score > 30 
query.WhereGreaterThan("Score",30);
// Score < 50
query.WhereLessThan("Score",50);

また、Orメソッドを利用することで、
複数のクエリによるをOR検索が可能です。

//1つ目の検索条件
NCMBQuery<NCMBObject> firstQuery = new NCMBQuery<NCMBObject> ("QueryTest");
firstQuery.WhereLessThanOrEqualTo ("Score", 4);

//2つ目の検索条件
NCMBQuery<NCMBObject> secondQuery = new NCMBQuery<NCMBObject> ("QueryTest");
secondQuery.WhereEqualTo ("Score", 7);

List<NCMBQuery<NCMBObject>> queries = new List<NCMBQuery<NCMBObject>> ();
queries.Add (firstQuery);
queries.Add (secondQuery);

//検索条件を結合する
NCMBQuery<NCMBObject> mainQuery = NCMBQuery<NCMBObject>.Or (queries);

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

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

ページの先頭へ