FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

正規表現検索をマスターしよう

f:id:mbaasdevrel:20180913163950p:plain

あまり知られていませんが、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を使うことで正規表現検索が可能です。ぜひ詳細な条件を指定した文字列検索の際に活用してください。

ドキュメント : 開発者向けドキュメント | ニフクラ mobile backend

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。