以下範例示範如何刪除文件、欄位 集合。
刪除文件
如要刪除文件,請使用下列各語言專用的 delete()
方法:
Web
使用 deleteDoc()
方法:
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web
使用 delete()
方法:
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Swift
使用 delete()
方法:
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Objective-C
使用 deleteDocumentWithCompletion:
方法:
[[[self.db collectionWithPath:@"cities"] documentWithPath:@"DC"] deleteDocumentWithCompletion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error removing document: %@", error); } else { NSLog(@"Document successfully removed!"); } }];
Kotlin+KTX
使用 delete()
方法:
db.collection("cities").document("DC") .delete() .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully deleted!") } .addOnFailureListener { e -> Log.w(TAG, "Error deleting document", e) }
Java
使用 delete()
方法:
db.collection("cities").document("DC") .delete() .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.d(TAG, "DocumentSnapshot successfully deleted!"); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error deleting document", e); } });
Dart
使用 delete()
方法:
db.collection("cities").doc("DC").delete().then( (doc) => print("Document deleted"), onError: (e) => print("Error updating document $e"), );
Java
使用 delete()
方法:
Python
使用 delete()
方法:
Python
使用 delete()
方法:
C++
使用 Delete()
方法:
db->Collection("cities").Document("DC").Delete().OnCompletion( [](const Future<void>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot successfully deleted!" << std::endl; } else { std::cout << "Error deleting document: " << future.error_message() << std::endl; } });
Node.js
使用 delete()
方法:
Go
使用 Delete()
方法:
PHP
使用 delete()
方法:
Unity
使用 DeleteAsync()
方法:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
使用 DeleteAsync()
方法:
Ruby
使用 delete()
方法:
刪除文件時,Cloud Firestore 不會自動
並刪除
子集合。但您仍可以參照方式存取子集合文件。
舉例來說,您可以在路徑中存取文件
平均 /mycoll/mydoc/mysubcoll/mysubdoc
您刪除了 /mycoll/mydoc
中的祖系文件。
不存在的祖系文件會顯示在控制台中, 但不會顯示在查詢結果和快照中。
想要刪除文件及文件中的所有文件 子集合,您必須手動執行。若需更多資訊,請參閲 刪除最愛。
刪除欄位
如要刪除文件中的特定欄位,請使用下列各語言專用的 FieldValue.delete()
方法
更新文件時:
Web
使用 deleteField()
方法:
import { doc, updateDoc, deleteField } from "firebase/firestore"; const cityRef = doc(db, 'cities', 'BJ'); // Remove the 'capital' field from the document await updateDoc(cityRef, { capital: deleteField() });
Web
使用 FieldValue.delete()
方法:
var cityRef = db.collection('cities').doc('BJ'); // Remove the 'capital' field from the document var removeCapital = cityRef.update({ capital: firebase.firestore.FieldValue.delete() });
Swift
使用 FieldValue.delete()
方法:
do { try await db.collection("cities").document("BJ").updateData([ "capital": FieldValue.delete(), ]) print("Document successfully updated") } catch { print("Error updating document: \(error)") }
Objective-C
使用 fieldValueForDelete:
方法:
[[[self.db collectionWithPath:@"cities"] documentWithPath:@"BJ"] updateData:@{ @"capital": [FIRFieldValue fieldValueForDelete] } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error updating document: %@", error); } else { NSLog(@"Document successfully updated"); } }];
Kotlin+KTX
使用 FieldValue.delete()
方法:
val docRef = db.collection("cities").document("BJ") // Remove the 'capital' field from the document val updates = hashMapOf<String, Any>( "capital" to FieldValue.delete(), ) docRef.update(updates).addOnCompleteListener { }
Java
使用 FieldValue.delete()
方法:
DocumentReference docRef = db.collection("cities").document("BJ"); // Remove the 'capital' field from the document Map<String,Object> updates = new HashMap<>(); updates.put("capital", FieldValue.delete()); docRef.update(updates).addOnCompleteListener(new OnCompleteListener<Void>() { // ... // ...
Dart
使用 FieldValue.delete()
方法:
final docRef = db.collection("cities").doc("BJ"); // Remove the 'capital' field from the document final updates = <String, dynamic>{ "capital": FieldValue.delete(), }; docRef.update(updates);
Java
使用 FieldValue.delete()
方法:
Python
使用 firestore.DELETE_FIELD
方法:
Python
使用 firestore.DELETE_FIELD
方法:
C++
使用 FieldValue::Delete()
方法:
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
Node.js
使用 FieldValue.delete()
方法:
Go
使用 firestore.Delete
方法:
PHP
使用 FieldValue::deleteField()
方法:
Unity
使用 FieldValue.Delete
方法:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
使用 FieldValue.Delete
方法:
Ruby
使用 firestore.field_delete
方法:
刪除集合
如何在「Cloud Firestore」中刪除整個集合或子集合, 擷取 (讀取) 集合或子集合中的所有文件,然後刪除 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件這項程序會產生讀取和刪除費用。如果您有大型資料集 集合刪除時,建議您一次刪除多個文件,以避免發生 發生「記憶體不足」錯誤。重複上述步驟,直到刪除整個 集合或子集合
刪除集合需要協調無上限 都有個別的刪除要求如果希望刪除整個集合 連線至受信任的伺服器環境雖然您可以刪除集合 ,這會對安全性和效能造成負面影響。
以下程式碼片段略為簡化,且不處理錯誤處理方式。 安全性、刪除子集合或盡可能提高成效。瞭解詳情 如要瞭解在實際工作環境中刪除集合的建議做法,請參閱 刪除集合和子集合。
網頁
// Deleting collections from a Web client is not recommended.
Swift
// Deleting collections from an Apple client is not recommended.
Objective-C
// Deleting collections from an Apple client is not recommended.
Kotlin+KTX
// Deleting collections from an Android client is not recommended.
Java
// Deleting collections from an Android client is not recommended.
Dart
我們不建議您從用戶端刪除集合。
Java
Python
Python
C++
// This is not supported. Delete data using CLI as discussed below.
Node.js
Go
PHP
Unity
// This is not supported. Delete data using CLI as discussed below.
C#
Ruby
使用 Firebase CLI 刪除資料
您也可以透過 Firebase CLI 刪除 文件和集合。使用下列指令刪除資料:
firebase firestore:delete [options] <<path>>
使用控制台刪除資料
你可以 從控制台的「Cloud Firestore」頁面刪除文件和集合。 如果從控制台刪除文件,該文件中的所有巢狀資料也會一併遭到刪除 文件,包括所有子集合。
透過存留時間政策刪除資料
存留時間政策會將特定欄位指定為 指定的集合群組。存留時間刪除作業會計入文件刪除作業 。
如要進一步瞭解如何設定存留時間,請參閱「使用存留時間政策管理資料保留機制」。
如要進一步瞭解錯誤代碼,以及如何解決刪除資料時的延遲問題,請參閱疑難排解頁面。
使用 Dataflow 刪除資料
Dataflow 是非常適合在 Firestore 資料庫進行大量作業的工具。 Dataflow 連接器專用的 Firestore 連接器簡介,網誌文章提供了一個範例,說明如何刪除 集合群組。