FirebaseのRealtime DatabaseでSQLのWhere句っぽい感じでデータを検索しよう

Realtime DatabaseってNoSQLなのでSQLが使用できないんですよね。
なので検索するときどうやるんだっけなといつも迷ってしまうのでまとめときます。

データは以下の通りになっています。

Firebaseのコードはこんな感じでRealtime Databaseを使用しています。

WHERE ID = ‘aaa’

シンプルにuserのkeyで取得する場合です。

WHERE name = ‘sato’

nameのvalueで検索する場合です。
orderByChildを使用すると検索対象のkeyにindexを設定しないと警告が表示されます。
‘sato’に一致した値が全て返されます。

WHERE age BETWEEN 18 AND 21

範囲で指定して検索してみます。

LIMIT 2

取得数を制限します。
この例では年齢順に2件まで取得しています。
昇順降順と書いていますがハッシュで返されるので順番ではないです。

limitToFirstは該当条件の先頭から取得します。(昇順)
bbbは18才、dddは17才

limitToLastは該当条件の後方から取得します。(降順)
aaaは21才、eeeは25才

WHERE name like ‘ta%’

前方一致は可能でした。(2017/9/13追記)
すげー。
Firebase公式の動画にあった。。

あとがき

パターン検索とかあったけどめんどいからやってない。
ElasticSearchをゴニョゴニョするとできる。
暇があったら追記する!(あった 2017/9/13追記)

参考

The Firebase Blog: Queries, Part 1: Common SQL Queries Converted for Firebase
ウェブ上でデータリストを操作 | Firebase
javascript – How to perform sql ‘LIKE’ operation on firebase? – Stack Overflow

スポンサードリンク