【Flutter×Firebase】Cloud Firestoreクエリ一覧

4 min read読了の目安(約3600字

where(特定の条件で抽出する)

演算子 意味 使い方
isEqualTo 〜と等しい .where('name', isEqualTo: '山田太郎')
isNotEqualTo 〜と等しくない .where('name', isNotEqualTo: '山田太郎')
isLessThan 〜より小さい .where('age', isLessThan: 20)
isLessThanOrEqualTo 〜以下 .where('age', isLessThanOrEqualTo: 20)
isGreaterThan 〜より大きい .where('age', isGreaterThan: 20)
isGreaterThanOrEqualTo 〜以上 .where('age', isGreaterThanOrEqualTo: 20)
arrayContains 配列内に右辺の要素を含む .where('hobbies', arrayContains: '釣り')
arrayContainsAny 配列内に右辺の要素のいずれかを含む .where('hobbies', arrayContainsAny: ['釣り', 'ギター'])
whereIn 右辺のいずれかが含まれている .where('name', whereIn: ['山田太郎', '山田花子'])
whereNotIn 右辺のいずれも含まれない .where('name', whereNotIn: ['山田太郎', '山田花子'])
isNull 右辺がnullである・ない .where('name', isNull: true)

isEqualTo(〜と等しい)

「name」 が 「山田太郎」 であるユーザーを抽出
final _store = FirebaseFirestore.instance;
_store.collection('users').where('name', isEqualTo: '山田太郎').get();

isNotEqualTo(〜と等しくない)

「name」 が 「山田太郎」 でないユーザーを抽出
final _store = FirebaseFirestore.instance;
_store.collection('users').where('name', isNotEqualTo: '山田太郎').get();

isLessThan(〜より小さい)

「age」 が 20 より小さい( 20 の場合は含まない)ユーザーを抽出
final _store = FirebaseFirestore.instance;
_store.collection('users').where('age', isLessThan: 20).get();

isLessThanOrEqualTo(〜以下)

「age」 が 20 以下( 20 の場合を含む)のユーザーを抽出
final _store = FirebaseFirestore.instance;
_store.collection('users').where('age', isLessThanOrEqualTo: 20).get();

isGreaterThan(〜より大きい)

「age」 が 20 より大きい( 20 の場合は含まない)ユーザーを抽出
final _store = FirebaseFirestore.instance;
_store.collection('users').where('age', isGreaterThan: 20).get();

isGreaterThanOrEqualTo(〜以上)

「age」 が 20 以上( 20 の場合を含む)のユーザーを抽出
final _store = FirebaseFirestore.instance;
_store.collection('users').where('age', isGreaterThanOrEqualTo: 20).get();

arrayContains(配列内に右辺の要素を含む)

配列 「hobbies」 に 「釣り」 を含むユーザーを抽出
final _store = FirebaseFirestore.instance;
_store.collection('users').where('hobbies', arrayContains: '釣り').get();

arrayContainsAny(配列内に右辺の要素のいずれかを含む)

配列 「hobbies」 に 「釣り」 、 「ギター」 のいずれかを含むユーザーを抽出
final _store = FirebaseFirestore.instance;
_store.collection('users').where('hobbies', arrayContainsAny: ['釣り', 'ギター']).get();

whereIn(右辺のいずれかが含まれている)

「name」 が 「山田太郎」 、 「山田花子」 のいずれかであるユーザーを抽出
final _store = FirebaseFirestore.instance;
_store.collection('users').where('name', whereIn: ['山田太郎', '山田花子']).get();

whereNotIn(右辺のいずれも含まれない)

「name」 が 「山田太郎」 、 「山田花子」 のいずれでもないユーザーを抽出
final _store = FirebaseFirestore.instance;
_store.collection('users').where('name', whereNotIn: ['山田太郎', '山田花子']).get();

isNull(右辺がnullである・ない)

「name」 がnullであるユーザーを抽出
final _store = FirebaseFirestore.instance;
_store.collection('users').where('name', isNull: true).get();

orderBy(特定の条件で並べ替える)

昇順で取得

「age」 が小さい順に取得
final _store = FirebaseFirestore.instance;
_store.collection('users').orderBy('age', descending: false).get();

降順で取得

「age」 が大きい順に取得
final _store = FirebaseFirestore.instance;
_store.collection('users').orderBy('age', descending: true).get();

limit(取得数を制限する)

「users」 からドキュメントを 20 個取得
final _store = FirebaseFirestore.instance;
_store.collection('users').limit(20).get();

備考

制限事項や複合クエリについては今後加筆していく予定です。
以下の記事を参考にさせて頂きました。ありがとうございました。