Die folgenden Beispiele veranschaulichen, wie Sie Dokumente, Felder und Sammlungen löschen.
Dokumente löschen
Verwenden Sie die folgenden sprachspezifischen delete()-Methoden, um ein Dokument zu löschen:
Web
Verwenden Sie die Methode deleteDoc():
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web
Verwenden Sie die Methode delete():
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Swift
Verwenden Sie die Methode delete():
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Objective-C
Verwenden Sie die Methode 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
Verwenden Sie die Methode delete():
db.collection("cities").document("DC") .delete() .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully deleted!") } .addOnFailureListener { e -> Log.w(TAG, "Error deleting document", e) }
Java
Verwenden Sie die Methode 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
Verwenden Sie die Methode delete():
db.collection("cities").doc("DC").delete().then( (doc) => print("Document deleted"), onError: (e) => print("Error updating document $e"), );
Java
Verwenden Sie die Methode delete():
Python
Verwenden Sie die Methode delete():
Python
Verwenden Sie die Methode delete():
C++
Verwenden Sie die Methode 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
Verwenden Sie die Methode delete():
Go
Verwenden Sie die Methode Delete():
PHP
Verwenden Sie die Methode delete():
Einheit
Verwenden Sie die Methode DeleteAsync():
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
Verwenden Sie die Methode DeleteAsync():
Ruby
Verwenden Sie die Methode delete():
Wenn Sie ein Dokument löschen, Cloud Firestore werden die Dokumente in den zugehörigen
Unterordnern nicht automatisch
gelöscht. Sie können über einen Verweis weiterhin auf die untergeordnete Sammlung zugreifen.
Sie können beispielsweise auf das Dokument unter dem Pfad /mycoll/mydoc/mysubcoll/mysubdoc zugreifen, auch wenn Sie das übergeordnete Dokument unter /mycoll/mydoc löschen.
Nicht vorhandene übergeordnete Dokumente werden in der Konsole angezeigt, aber nicht in Abfrageergebnissen und Übersichten.
Wenn Sie ein Dokument und alle in dessen untergeordneten Sammlungen enthaltenen Dokumente löschen möchten, müssen Sie dies manuell tun. Weitere Informationen finden Sie unter Sammlungen löschen.
Felder löschen
Wenn Sie bestimmte Felder aus einem Dokument löschen möchten, verwenden Sie beim Aktualisieren eines Dokuments die folgenden sprachspezifischen FieldValue.delete()-Methoden:
Web
Verwenden Sie die Methode 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
Verwenden Sie die Methode 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
Verwenden Sie die Methode 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
Verwenden Sie die Methode 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
Verwenden Sie die Methode 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
Verwenden Sie die Methode 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
Verwenden Sie die Methode 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
Verwenden Sie die Methode FieldValue.delete():
Python
Verwenden Sie die Methode firestore.DELETE_FIELD:
Python
Verwenden Sie die Methode firestore.DELETE_FIELD:
C++
Verwenden Sie die Methode FieldValue::Delete():
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
Node.js
Verwenden Sie die Methode FieldValue.delete():
Go
Verwenden Sie die Methode firestore.Delete:
PHP
Verwenden Sie die Methode FieldValue::deleteField():
Einheit
Verwenden Sie die Methode FieldValue.Delete:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
Verwenden Sie die Methode FieldValue.Delete:
Ruby
Verwenden Sie die Methode firestore.field_delete:
Sammlungen löschen
Wenn Sie eine ganze Sammlung oder Untersammlung in Cloud Firestore löschen möchten, rufen Sie alle Dokumente in der Sammlung oder Untersammlung ab (lesen Sie sie) und löschen Sie sie. Für diesen Vorgang fallen sowohl Lese- als auch Löschkosten an. Wenn Sie größere Sammlungen haben, sollten Sie die Dokumente in kleineren Batches löschen, um Fehler aufgrund von Speichermangel zu vermeiden. Wiederholen Sie den Vorgang, bis Sie die gesamte Sammlung oder Unterteilung gelöscht haben.
Zum Löschen einer Sammlung muss eine unbegrenzte Anzahl einzelner Löschanfragen koordiniert werden. Wenn Sie ganze Sammlungen löschen möchten, tun Sie dies nur von einer vertrauenswürdigen Serverumgebung aus. Es ist zwar möglich, eine Sammlung von einem Mobil-/Web-Client aus zu löschen, dies hat jedoch negative Auswirkungen auf Sicherheit und Leistung.
Die folgenden Snippets wurden zur besseren Übersichtlichkeit vereinfacht und enthalten keine Fehlerbehandlung, Sicherheitsmaßnahmen, das Löschen von Unterkollektionen oder Leistungsoptimierungen. Weitere Informationen zu einem empfohlenen Ansatz zum Löschen von Sammlungen in der Produktion finden Sie unter Sammlungen und untergeordnete Sammlungen löschen.
Web
// 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
// Deleting collections from an Android client is not recommended.Java
// Deleting collections from an Android client is not recommended.Dart
Das Löschen von Sammlungen auf dem Client wird nicht empfohlen.
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
Daten mit TTL-Richtlinien löschen
In einer TTL-Richtlinie wird ein bestimmtes Feld als Ablaufzeit für Dokumente in einer bestimmten Sammlungsgruppe festgelegt. TTL-Löschvorgänge werden auf Ihre Kosten für das Löschen von Dokumenten angerechnet.
Informationen zum Festlegen von TTL finden Sie unter Datenaufbewahrung mit TTL-Richtlinien verwalten.
Bulk-Löschjobs
Cloud Firestore unterstützt mehrere Tools für das Massenlöschen. Sie sollten ein Tool basierend auf der Anzahl der Dokumente, die Sie löschen müssen, und dem erforderlichen Konfigurationsgrad auswählen.
Bei kleineren Jobs mit Tausenden von Dokumenten können Sie die Console oder die Firebase CLI verwenden. Bei größeren Aufgaben kann es bei diesen Tools zu Zeitüberschreitungen kommen, sodass Sie das Tool mehrmals ausführen müssen.
Console
Sie können Dokumente und Sammlungen auf der Seite Cloud Firestore in der Console löschen. Wenn Sie ein Dokument über die Konsole löschen, werden alle verschachtelten Daten in diesem Dokument gelöscht, einschließlich aller untergeordneten Sammlungen.
Firebase CLI
Sie können auch die Firebase CLI verwenden, um Dokumente und Sammlungen zu löschen. Verwenden Sie den folgenden Befehl, um Daten zu löschen:
firebase firestore:delete --database=DATABASE_ID PATH
Ersetzen Sie DATABASE_ID durch Ihre Datenbank-ID und PATH durch einen Pfad zu einem Dokument oder einer Sammlung.
Verwenden Sie für große Löschjobs (Millionen von Dokumenten) eine der folgenden Optionen:
Verwaltetes Bulk-Löschen
In Cloud Firestore können Sie eine oder mehrere Sammlungsgruppen gleichzeitig löschen. Weitere Informationen finden Sie unter Daten im Bulk löschen.
Dataflow-Connector
Sie können Dataflow für Bulk-Vorgänge in Ihrer Datenbank verwenden. Diese Option bietet die meisten Konfigurationsmöglichkeiten, erfordert aber auch mehr Einrichtung als andere Optionen zum Massenlöschen. Im Cloud Firestore-Connector-Blogbeitrag zur Einführung von Dataflow finden Sie ein Beispiel für das Löschen aller Dokumente in einer Sammlungsgruppe.