結論から申し上げると
- 2021年11月現在、Firestoreのコレクション内全てのドキュメントから特定のフィールドを削除する機能はない
- How to delete fields for all documents in Firestore (自分が投稿した質問です)
- Firebaseのサポートに問い合わせても、「SDKを使ってfor文で実装しろ」との回答を貰う
- 以下のように自前で実装する必要がある
実装例
- usersコレクションの全ドキュメントからnameフィールドを削除する例(Javascript)
- Firebaseへ接続するためのセットアップは省略
const firebase = require("firebase/app");
require("firebase/firestore");
const targetFieldName = 'name';
const delField = {[targetFieldName] : firebase.firestore.FieldValue.delete()};
(async () => {
const colRef = firebase.firestore().collection('users');
colSnapshot.forEach((doc) => {
colRef.doc(doc.id).update(delField);
});
})();
補足
- 実行時間は15,000件で10秒かからない程度だった。非常に早い。
- 高速で実行されるが故、途中で止めることができないので、readline-syncなどを使ってコンソール上で実行前の最終確認を入れておくとチームに喜ばれるだろう
- Firebaseコンソール上で該当のコレクションを開いておくと、削除の過程を視認できるので、作業中は開いておくことをお勧めする