データストア(Unity)
基本的な使い方
Contents |
概要
このページでは、データストア機能の基本的な使い方について解説していきます。
データストアで利用可能なデータ型
データストアでは、以下の値が利用可能です。
種類 | サンプル |
---|---|
文字列 | ABC |
配列 | ["orange", "apple", "grape"] |
数字 | 123 |
日付 | 2013-09-06T01:51:03.606Z |
真偽値 | true または false |
オブジェクト | {"name":"orange"} または null |
緯度経度(位置情報) | 33.857619,122.378986 |
- null はオブジェクト型です。
- フィールドにデータが登録されていない場合、管理画面では (undefined) と表示されます。
なお、一度フィールドにデータを登録した後に、登録前の状態に戻すことは出来ません。
データ未登録状態として扱いたい場合は、null を設定してください。
アプリでの実装
NCMBObjectは、mobile backendへのオブジェクトの保存・更新・削除などを行うクラスです。
NCMBObjectはスキーマレスなJSON互換のkey-value形式のオブジェクトを扱うことができます。
オブジェクトの保存先はNCMBObjectの初期化時に指定したクラス名で識別されます。
プロパティ
NCMBObjectクラスの主要な規定プロパティは以下の通りです。
// ClassName: オブジェクトのクラス名
// ObjectId: オブジェクトのID
// CreateDate: 登録日時
// UpdateDate: 更新日時
// ACL: アクセス権限情報
// IsDirty: オブジェクトの変更の有無
// Keys: オブジェクトの持つキー
// Item: オブジェクトのkey-value取得、設定
オブジェクトをデータストアに保存する
オブジェクトをデータストアに保存するには、SaveAsyncメソッドが利用できます。
指定したクラスがデータストアに存在しない場合は、新規にクラスが作成されます。
※ role, file, push, user, installation などは標準クラスとして作成されているので、新規クラス作成時にはクラス名にセットできません。
キーと値をセットする場合は、AddメソッドかItemプロパティを利用します。
※Addメソッド、Itemプロパティについて
Itemプロパティを使用すると、オブジェクトに存在しないキーの値を設定することで、新しい要素を追加することができます。
指定したキーがすでに存在する場合は、以前の値を上書きします。
Addメソッドの場合は、指定したキーを持つ値がすでに存在する場合、例外をスローします。
以下のサンプルコードでは、testというキーにvalueという値をセットして
オブジェクトを保存しています。
NCMBObject obj = new NCMBObject ("Book");
obj.Add ("test", "value");
obj.SaveAsync ((NCMBException e) => {
if (e != null) {
//エラー処理
} else {
//成功時の処理
}
});
Itemプロパティを用いる場合は、Addメソッドの部分を、以下の用に書き換えます。
obj["test"] = "value";
また、使用している .NET Framework のバージョンが 4.6 以上の場合は、Taskを用いて複数のオブジェクトをデータストアへ格納することもできます。
NCMBObject personA = new NCMBObject ("Book");
personA.Add ("title", "Alice");
NCMBObject personB = new NCMBObject ("Book");
personB.Add ("title", "Bob");
NCMBObject personC = new NCMBObject ("Book");
personC.Add ("title", "Charlie");
save_use_task_sample(personA,personB,personC);
~~~ 途中省略 ~~~
public async void save_use_task_sample(NCMBObject record1,NCMBObject record2,NCMBObject record3){
try{
Task<NCMBObject> task1 = NCMBObjectTaskExtension.SaveTaskAsync(record1);
Task<NCMBObject> task2 = NCMBObjectTaskExtension.SaveTaskAsync(record2);
Task<NCMBObject> task3 = NCMBObjectTaskExtension.SaveTaskAsync(record3);
List<Task<NCMBObject>> tasks = new List<Task<NCMBObject>>();
tasks.Add(task1);
tasks.Add(task2);
tasks.Add(task3);
await Task.WhenAll(tasks);
//成功時の処理
}catch(NCMBException e){
//エラー処理
}
}
オブジェクトの取得
オブジェクトの取得方法は以下の2つがあります。
- objectIdをもとに、データを取得する
- クエリを作成してオブジェクトを検索する
ここでは、1番目のobjectIdをもとに取得する方法を説明します。
FetchAsyncメソッドを利用することで指定されたobjectIdのデータをmobile backendから取得できます。
以下のサンプルコードでは、objというオブジェクトをデータストアに保存したあと、objectIdをもとにしてそのオブジェクトを再び取得しています。
//保存したオブジェクトのobjectIdをもとに取得を行う
NCMBObject obj2 = new NCMBObject ("Book");
obj2.ObjectId = obj.ObjectId;
obj2.FetchAsync ((NCMBException e) => {
if (e != null) {
//エラー処理
} else {
//成功時の処理
}
});
オブジェクトの更新
保存済み(または、objectIdを持っている)のオブジェクトに新しい値をセットして
SaveAsyncメソッドを保存時と同様に実行することでデータストアの値が更新されます。
オブジェクトの削除
オブジェクトをデータストアから削除する場合は、DeleteAsyncメソッドを利用します。
NCMBObject objDelete = new NCMBObject ("Book");
objDelete.ObjectId = obj.ObjectId; //obj.ObjectIdに保存時のIDが保存されている
objDelete.DeleteAsync ((NCMBException e) => {
if (e != null) {
//エラー処理
} else {
//成功時の処理
}
});
データ操作
・Increment
指定したキーをインクリメントします。(すでに該当フィールドに値が存在する場合にのみ更新可能)
引数にdouble型を指定した場合のIncrement結果は、double型になります。
double型以外を指定した場合の結果はlong型になります。
NCMBObject obj = new NCMBObject ("SaveTest");
obj.Increment ("score");
obj.Increment ("score", 5);
obj.Increment ("score", 5.5);
obj.SaveAsync ();
・AddToListとAddRangeToList
配列に指定したオブジェクトを追加します。挿入位置は最後に追加します。
NCMBObject obj = new NCMBObject ("SaveTest");
obj.AddToList ("array", 1);
ArrayList array = new ArrayList ();
array.Add (5);
obj.AddRangeToList ("array", array);
obj.SaveAsync ();
※上記の例の場合、「set」と「add」では結果は変わらない。
※ただし、同一オブジェクトへ複数端末から「set」にて更新した場合、互いの更新を上書きしてしまう恐れがある。
・AddUniqueToListとAddRangeUniqueToList
配列に指定したオブジェクトを追加します。
今までに登録されていない値のみ追加します。挿入位置は保証されません。
NCMBObject obj = new NCMBObject ("SaveTest");
obj.AddUniqueToList ("array", 5);
ArrayList array = new ArrayList ();
array.Add (5);
array.Add (2);
obj.AddRangeUniqueToList ("array", array);
obj.SaveAsync ();
・RemoveRangeFromList
配列から一致する複数のオブジェクトを削除します。
ArrayList array = new ArrayList ();
array.Add (2);
obj.RemoveRangeFromList ("array", array);
obj.SaveAsync ();
オブジェクトの関連付け
NCMBObjectに別のNCMBObjectをセットすることも可能です。
この場合、データストア保存時にはセットされたNCMBObjectへのポインタがセットされます。
NCMBObject childObj = new NCMBObject("SubObject");
childObj.Add("score", 10);
childObj.SaveAsync((NCMBException e) => {
if (e != null)
{
//エラー処理
}
else
{
//成功時の処理
NCMBObject obj = new NCMBObject("MainObject");
obj.Add("SubObject", childObj);
obj.SaveAsync((NCMBException e2) => {
if (e != null)
{
//エラー処理
}
else
{
//成功時の処理
}
});
}
});
参照先のオブジェクトを取得する場合は、セットされた子オブジェクトのインスタンスを作成し、
objectIdをもとにFetchAsyncを実行します。
// 子オブジェクトのポインタを取得
NCMBObject child = (NCMBObject)obj["SubObject"];
// 子オブジェクトを取得する
child.FetchAsync ();
NCMBObjectに別のNCMBObjectを複数セットしたい時にはリレーションを用います。
この場合、データストア保存時にはセットされたNCMBObjectへのリレーションがセットされます。
//リレーション先作成
NCMBObject childObj1 = NCMBObject.CreateWithoutData ("SubClass", "object_id_1");
NCMBObject childObj2 = NCMBObject.CreateWithoutData ("SubClass", "object_id_2");
//親のリレーション取得
NCMBObject parentObj = new NCMBObject ("MainClass");
NCMBRelation<NCMBObject> relation = parentObj.GetRelation<NCMBObject> ("Class");
//親にリレーション追加
relation.Add (childObj1);
relation.Add (childObj2);
parentObj.SaveAsync ();
//リレーション先の削除を行う場合は、Addメソッドの部分を、以下の用に書き換えます。
relation.Remove (childObj1);
relation.Remove (childObj2);
parentObjは未保存でも実行できますが、リレーション先であるchildObjは保存済みである必要があります。
UnitySDKでは、AddとRemoveを保存前に組み合わせて実行した場合、別々のオブジェクトに対してのAdd,Remove操作は行えません。
組み合わせる場合はどちらか一方の操作をSaveAsync()で保存し、保存が完了してからもう一方の操作を行ってください。
AddとRemoveで同じオブジェクトを指定した場合は、相殺され結果的に指定したオブジェクトのリレーション操作はなかった事になります。
以下が組み合わせのパターン例と結果になります。
//パターン1 結果:OK 動作:相殺され何もしない
relation.Add (childObj1);
relation.Remove (childObj1);
//パターン2 結果:NG 動作:リレーション操作が別々のオブジェクトのためExceptionが発生。
relation.Add (childObj1);
relation.Remove (childObj2);
//パターン3 結果:OK 動作:childObj2のみ保存される(childObj1は相殺されているため)
relation.Add (childObj1);
relation.Remove (childObj1);
relation.Add (childObj2);
リレーション先を検索する場合は、GetQueryメソッドを利用することで、
リレーション先のNCMBQueryオブジェクトを取得できます。
以下の例は、オブジェクトIDがxxxxxxxxxである親オブジェクトからリレーション先を検索する例です。
※リレーション先を検索する際は通常の検索時の挙動と異なる点があります。必ず開発ガイドラインの「リレーションについて」をご確認ください。
NCMBObject parentObj = NCMBObject.CreateWithoutData ("MainClass", "xxxxxxxxxxxx");
parentObj.FetchAsync ((NCMBException e) => {
if (e != null) {
//エラー処理
} else {
//親のリレーション取得
NCMBRelation<NCMBObject> relation = parentObj.GetRelation<NCMBObject> ("Class");
NCMBQuery<NCMBObject> query = relation.GetQuery ();
//リレーション先検索
query.FindAsync ((List<NCMBObject> childObjList,NCMBException error) => {
if (error != null) {
//エラー処理
} else {
//成功時の処理
foreach (NCMBObject obj in childObjList) {
Debug.Log ("objectId : " + obj.ObjectId);
}
}
});
}
});
基本的な検索の利用
mobile backend上に保存されているデータを検索する場合には、NCMBQueryクラスを利用します。
以下のサンプルでは、QueryTestクラスにて、Scoreが7であるオブジェクトを取得しています。
WhereEqualToメソッドで検索条件を設定し、
FindAsyncメソッドで、指定された条件のオブジェクトを検索しています。
※limitを指定していない場合、検索結果として取得される最大データ件数は100件です。
検索結果のデータ件数が多い場合は、limitとskipを活用してください。
詳細は検索条件を設定するのlimit、skip部分をご覧ください。
//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.WhereContainsAll("ScoreArray",request);
limitやskipを使って、取得件数や取得開始位置を指定することができます。
また、複数のオブジェクトがある場合はソートすることも可能です。
※limitを指定していない場合は、limitはデフォルトである100として検索が行われます。(REST API リファレンス:クエリの指定方法 参照)
limitの値については、必ず適切な値を設定してください。詳細はこちらをご覧ください。
//取得件数の指定
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);
管理画面での操作
クラスを新たに作成する
管理画面左側メニューのデータストアをクリックしてください。
緑の「+作成」ボタンをクリックして、新規作成を選択します。
すると以下のようなポップアップが表示されます。
クラス名を入力し、「作成する」ボタンをクリックすると、クラスが新規に作成されます。
データストアでも作成したクラスが表示されます。以下の例では作成したClass_Testが表示されています。
ファイルからクラスをインポートする
データストアでは、エクスポートしたデータや、お客様がカスタマイズしたJSON形式・テキスト形式(.txt)・CSV形式のファイルをインポートすることにより、クラスを作成することが可能です。
- JSON形式
JSON形式のデータをインポートする場合、インポートしたいデータは以下の例のように「results」をキーとする配列に格納されている必要があります。
- テキスト形式(.txt)・CSV形式
テキスト形式やCSV形式のファイルからインポートした場合、1行目がフィールド名として認識され、2行目以降の内容がデータとしてインポートされます。
以下の例では、name、flag、numberというフィールドが作成され、2行目以降がデータとして登録されます。
ダブルクォーテーションで囲った文字は、文字列として認識されます。それ以外の記述方法は、データストアで利用可能な型に準じています。
- 注意
- カンマの直後に半角スペースを入れると正しく値が認識されない場合があります
- オブジェクト形式(緯度経度、日付型、ポインタ型 等)はインポートできません
- 注意
name,flag,number
"hoge",true,123
"fuga",true,10
ファイル形式の種類に関係なく、インポートするファイルは、日本語の文字化けを防ぐために、文字コードをUTF-8にして保存してください。また、UTF-8のファイルでもBOMがついているファイルをインポートしようとすると、エラーが返却されますので注意してください。
インポート可能な最大ファイルサイズは2GBとなっています。
インポートしたい場合は、データストアの画面にて、緑の「+作成」ボタンをクリックしてインポートを選択します。
以下のようなポップアップが表示されますので、クラス名を入力し、インポートするファイルを選択して、「インポート」ボタンをクリックしてください。
エクスポートしたデータをインポートするなど、すでに同じ名前のクラスがデータストア内に存在している場合、重複エラーが発生します。
その場合は、既存のクラスを削除してからもう一度インポートしてください。
データをエクスポートしたい場合には以下のページをご覧ください。
エクスポート機能を利用する
クラスを削除する
上で作成したClass_Testをクラスを削除するには、データストアの右上にある「クラスの編集」ボタンをクリックします。
以下のページに遷移するので、「クラスの削除」ボタンをクリックします。
右上にある「クラスの削除」ボタンをクリックすると、以下のポップアップが表示されます。
クラスを削除していいか確認してから、クラスの削除を実行してください。
フィールドを新たに作成する
データストアの画面で、フィールドを作成するクラスをクリックしてください。
データストアの上側にある「+新しいフィールド」ボタンをクリックします。
フィールド名を入力して、「作成する」ボタンをクリックしてください。
フィールドを削除する
フィールドの削除は、クラスの編集画面から行います。データストアの右上にある「クラスの編集」ボタンをクリックしてください。
作成したフィールドの左側にチェックボックスがあります。削除するフィールドのチェックボックスをクリックし、「+新規フィールド」ボタンの横にある削除ボタンをクリックすると、ポップアップが表示されます。
フィールドを削除していいか確認してから、フィールドの削除を実行してください。
レコードを追加する
データストアの画面で、レコードを追加するクラスをクリックしてください。
データストアの左上にある「+新しいレコード」をクリックすると、空のレコードが表示されます。
また、レコードが1つも存在しないクラスの場合、データストアの中央にも、レコード追加のボタンが表示されます。
データストアでは、追加したフィールドのみ編集可能で、その他のフィールドは自動的に値が格納されます。
以下の例では、nameというフィールドを追加したので、空のレコードをダブルクリックし、nameフィールドに「tarou」と入力しました。
エンターキーを押すと値が登録され、objectIdやcreateDateなどが自動的に登録されます。
値を編集中の時は、データ型を選択する吹き出しが表示されるので、文字列や数値など、どのデータ型で値を登録するのか設定することができます。
レコードを削除する
各レコードの左側にあるチェックボックスをクリックし、「+新しいフィールド」ボタンの横にある「削除」ボタンをクリックすると、ポップアップが表示されます。
レコードを削除していいか確認してから、レコードの削除を実行してください。
レコードの検索
データストアにあるデータが増えてきた場合などに、絞り込み検索を使って効率的にデータストアを閲覧することが可能です。
データストアの左下にある、「絞り込み」ボタンをクリックすると、検索条件を設定することができます。
絞り込み検索の条件は、以下のように設定します。
- フィールド名を指定する
- 検索する値を入力する
- 検索する値のデータ型を指定する
- 検索条件を指定する
- 適用ボタンをクリック
この時、検索条件で「いずれかと同じ」「いずれかを含む」「いずれとも違う」を選択した場合は、配列形式で異なったデータ型の値を検索条件に指定することが可能です。
以下の例では、numberというフィールドで、数値として登録された「1」と、文字列として登録された「1」を検索条件で指定しています。
また、のアイコンをクリックすることで、検索条件を複数設定できます。
※ null(オブジェクト)のデータを検索した場合、データ未登録の(=管理画面上で(undefined)と表示されている)データも検索されます。
※「リレーションを見る」をクリックし遷移した画面にて検索を行う場合は、開発ガイドラインの「リレーションについて」をご確認ください。
クラスのパーミッションを設定する
クラスの編集画面で、右上の「パーミッションの設定」ボタンをクリックします。
ポップアップが表示されるので、「+新しいパーミッション」をクリックしてパーミッションの設定を追加してください。
対象を会員やロールに限定することで、パーミッションを一部の会員に限定することが可能です。
クラスのパーミッションを削除する
クラスのパーミッションは、各行の左側にあるチェックボックスをクリックし、削除ボタンをクリックすると削除できます。
レコードのパーミッションを設定する
レコードのパーミッションを設定するには各レコードの右側にあるパーミッション編集ボタンをクリックします。
パーミッション設定画面が表示されますので、「+新しいパーミッション」ボタンをクリックして、パーミッションを設定してください。
レコードのパーミッションを削除する
レコードのパーミッションは、各行の左側にあるチェックボックスをクリックし、削除ボタンをクリックすると削除できます。
暗号化の設定
mobile backendへのデータ保存時に、暗号化を実施するかフィールドごとに設定することが可能です。
※暗号化処理に関する詳細情報については、開発ガイドライン:内部データベースについてをご参照ください。
各データ型の暗号化可否については以下の通りです。
種類 | 暗号化可否 | 備考 |
---|---|---|
文字列 | 可 | |
配列 | 可 | 各要素のデータ型の暗号可否に従う |
数字 | 否 | 暗号化されずに保存されます |
日付 | 否 | 暗号化されずに保存されます |
真偽値 | 否 | 暗号化されずに保存されます |
オブジェクト | 可 | { key : value } のvalueのみ、各データ型の暗号可否に従って暗号化されます |
緯度経度 | 否 | 暗号化されずに保存されます |
管理画面での暗号化設定方法
データストアを開き、クラスを選択して右上の「クラスの編集」ボタンをクリックしてください。
フィールドの一覧が表示され、暗号化が可能なフィールドのみ「暗号化する」ボタンがクリックできるようになっています。
※なお、暗号化が可能であっても既にデータが存在しているフィールドについては、値を持つレコードを削除していただかないと、暗号化への切り替えはできません。ご注意ください。
「暗号化する」ボタンをクリックすると以下のような確認画面が表示されますので、問題なければ暗号化してください。
暗号化を解除する場合は、クラスの編集画面にて「暗号化を解除する」ボタンをクリックしてください。
※会員クラスのpasswordフィールドについては、暗号化有無にかかわらず管理画面上では表示されません。
※一度暗号化したフィールドは、クラス内該当フィールドのデータが全て削除されない限り、暗号化の設定を解除することはできません。
※暗号化したフィールドでは、下記記載のオペレータが利用不可となります。
- 項目の検索
機能 | オペレータ |
---|---|
より小さい | $lt |
より大きい | $gt |
以下 | $lte |
以上 | $gte |
正規表現での比較 ※文字列のみ | $regex |
- 複合条件検索
機能 | オペレータ |
---|---|
サブクエリと合致するデータのうち、クエリとサブクエリで指定したキーの値が一致するデータを取得 | $select |
- ポインタの検索(リレーションも含む)
機能 | オペレータ |
---|---|
等しい(1項目) | なし |
サブクエリに合致するデータを、ポインタとして持っているデータを取得 | $inQuery |
オブジェクトIDが指定された親のリレーションにひもづく子のデータを取得 | $relatedTo |
- 位置情報検索
機能 | オペレータ |
---|---|
指定位置から距離が近い順でデータを取得 (orderを指定した場合は、orderが優先される) オプションで最遠距離を以下の単位で指定可能 $maxDistanceInMiles → マイル $maxDistanceInKilometers → キロメートル $maxDistanceInRadians → ラジアン |
$nearSphere |
指定矩形の内側に存在するデータを取得 矩形は$boxを使って左下、右上を指定 |
$within / $box |
- その他クエリのキーについて
機能 | キーの名前 |
---|---|
並び順を指定する (降順はマイナス付与) カンマで区切ると複数項目の並べ替えが可能 |
order |
お探しの内容が見つからなかった場合はユーザーコミュニティ
もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。
推奨画面サイズ1024×768px以上