あまり知られていませんが、NCMBでのデータストアでは正規表現を使った検索が行えます。どの程度の正規表現が使えるのかは$regex — MongoDB Manualを参照してください。
ここでは各言語別の実装方法を紹介します。
JavaScript SDKの場合
JavaScriptは標準のメソッドが用意されていますので、それを使います。
const Hello = ncmb.DataStore('Hello'); Hello.regularExpressionTo('field', '^.*Test');
Objective-C SDKの場合
Objective-C SDK以降は専用のメソッドはありません。Dictionaryを使って、equalTo検索に適用します。
NCMBQuery *query = [NCMBQuery queryWithClassName:@"Hello"]; NSMutableDictionary *where = [NSMutableDictionary dictionary]; [where setValue: @"^.*Test" forKey: @"$regex"]; [query whereKey:@"field" equalTo: where];
Swift SDKの場合
Swift SDKも同様です。
var query : NCMBQuery<NCMBObject> = NCMBQuery.getQuery(className: "Hello") var condition = [String: String]() condition["$regex"] = "^.*Test" query?.whereKey("field", equalTo: condition)
Android SDKの場合
Android SDKの場合も同様にJSONObjectを定義して条件を指定します。
NCMBQuery<NCMBObject> query = new NCMBQuery<>("Hello"); JSONObject where = new JSONObject(); where.put("$regex", "^.*Test"); query.whereEqualTo("field", where);
Unity SDKの場合
Unityの場合もHashtableなりを用意して検索を実行します。
NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("Hello"); Hashtable where = new Hashtable(); string str = "^.*Test"; where.Add("$regex", str); query.WhereEqualTo("field", where);
まとめ
JavaScript SDKは専用のメソッドがあるので分かりやすいですが、他のSDKであってもEqualToを使うことで正規表現検索が可能です。ぜひ詳細な条件を指定した文字列検索の際に活用してください。