5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Flutter]Firestoreから該当するフィールドのdocument IDを取得する方法

Posted at

内容

FireStoreで特定のフィールドの値を含むドキュメントを探し
該当するドキュメントを全て取得または削除する方法について記載します。
スクリーンショット 2022-05-06 12.35.45.png

イメージとしては
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の有無などで取得の仕方が変わってしまうので、
自分と同じ状況の方に参考になってもらえたら幸いです。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?