内容
FireStoreで特定のフィールドの値を含むドキュメントを探し
該当するドキュメントを全て取得または削除する方法について記載します。
イメージとしては
communityフィールドがshutアカデミーのドキュメント全てを取り出すといった認識です。
方法
return FirebaseFirestore.instance
.collection('attendances')
.where('community', isEqualTo: 'shutアカデミー')
.get()
.then(
(QuerySnapshot snapshot) => {
snapshot.docs.forEach((f) {
print(f.reference.id);
}),
},
);
これを呼ぶだけで2022年05月06日山田太郎が取り出せます。
アカウント削除と同時にその人が持つデータ全て一括で削除したい場合などは
return FirebaseFirestore.instance
.collection('attendances')
.where('community', isEqualTo: 'shutアカデミー')
.get()
.then(
// 取得したdocIDを使ってドキュメント削除
(QuerySnapshot snapshot) => {
snapshot.docs.forEach((f) {
FirebaseFirestore.instance
.collection('attendances')
.doc(f.reference.id)
.delete();
}),
},
);
これで該当する全てのドキュメントが一括で削除できるのでとても便利です。
まとめ
Firestoreはデータ取得の時にwhereの有無などで取得の仕方が変わってしまうので、
自分と同じ状況の方に参考になってもらえたら幸いです。