Przykłady usuwania dokumentów, pól i kolekcji znajdziesz poniżej.
Usuwanie dokumentów
Aby usunąć dokument, użyj tych metod delete() w zależności od języka:
Web
Użyj metody deleteDoc():
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web
Użyj metody delete():
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Swift
Użyj metody delete():
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Objective-C
Użyj metody 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
Użyj metody delete():
db.collection("cities").document("DC") .delete() .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully deleted!") } .addOnFailureListener { e -> Log.w(TAG, "Error deleting document", e) }
Java
Użyj metody 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
Użyj metody delete():
db.collection("cities").doc("DC").delete().then( (doc) => print("Document deleted"), onError: (e) => print("Error updating document $e"), );
Java
Użyj metody delete():
Python
Użyj metody delete():
Python
Użyj metody delete():
C++
Użyj metody 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
Użyj metody delete():
Go
Użyj metody Delete():
PHP
Użyj metody delete():
Unity
Użyj metody DeleteAsync():
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
Użyj metody DeleteAsync():
Ruby
Użyj metody delete():
Gdy usuniesz dokument, Cloud Firestore nie usunie automatycznie dokumentów w jego podkolekcjach. Nadal możesz uzyskiwać dostęp do dokumentów podzbioru za pomocą odwołania.
Możesz na przykład uzyskać dostęp do dokumentu w ścieżce /mycoll/mydoc/mysubcoll/mysubdoc, nawet jeśli usuniesz dokument nadrzędny w /mycoll/mydoc.
Nieistniejące dokumenty nadrzędne są widoczne w konsoli, ale nie pojawiają się w wynikach zapytań ani zrzutach.
Jeśli chcesz usunąć dokument i wszystkie dokumenty w jego podkolekcjach, musisz to zrobić ręcznie. Więcej informacji znajdziesz w artykule Usuwanie kolekcji.
Usuwanie pól
Aby usunąć z dokumentu określone pola, podczas aktualizowania dokumentu użyj tych metod FieldValue.delete() w zależności od języka:
Web
Użyj metody 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
Użyj metody 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
Użyj metody 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
Użyj metody 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
Użyj metody 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
Użyj metody 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
Użyj metody 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
Użyj metody FieldValue.delete():
Python
Użyj metody firestore.DELETE_FIELD:
Python
Użyj metody firestore.DELETE_FIELD:
C++
Użyj metody FieldValue::Delete():
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
Node.js
Użyj metody FieldValue.delete():
Go
Użyj metody firestore.Delete:
PHP
Użyj metody FieldValue::deleteField():
Unity
Użyj metody FieldValue.Delete:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
Użyj metody FieldValue.Delete:
Ruby
Użyj metody firestore.field_delete:
Usuwanie kolekcji
Aby usunąć całą kolekcję lub podkolekcję w Cloud Firestore, pobierz (odczytaj) wszystkie dokumenty w kolekcji lub podkolekcji i je usuń. Ten proces wiąże się z kosztami odczytu i usuwania. Jeśli masz większe kolekcje, możesz usuwać dokumenty w mniejszych partiach, aby uniknąć błędów związanych z brakiem pamięci. Powtarzaj ten proces, aż usuniesz całą kolekcję lub podkolekcję.
Usunięcie kolekcji wymaga skoordynowania nieograniczonej liczby pojedynczych żądań usunięcia. Jeśli musisz usunąć całe kolekcje, zrób to tylko w zaufanym środowisku serwera. Kolekcję można usunąć z klienta mobilnego lub internetowego, ale ma to negatywny wpływ na bezpieczeństwo i wydajność.
Poniższe fragmenty kodu zostały uproszczone dla przejrzystości i nie obejmują obsługi błędów, zabezpieczeń, usuwania podzbiorów ani optymalizacji wydajności. Więcej informacji o jednym z zalecanych sposobów usuwania kolekcji w środowisku produkcyjnym znajdziesz w artykule Usuwanie kolekcji i podkolekcji.
Sieć
// 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
Usuwanie kolekcji z konta klienta nie jest zalecane.
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
Usuwanie danych za pomocą zasad TTL
Zasady TTL wyznaczają określone pole jako czas wygaśnięcia dokumentów w danej grupie kolekcji. Operacje usunięcia na podstawie TTL wliczają się do kosztów usuwania dokumentów.
Więcej informacji o ustawianiu czasu życia znajdziesz w artykule Zarządzanie przechowywaniem danych za pomocą zasad TTL.
Zadania usuwania zbiorczego
Cloud Firestore obsługuje kilka narzędzi do usuwania zbiorczego. Wybierz narzędzie w zależności od liczby dokumentów, które chcesz usunąć, oraz wymaganego poziomu konfigurowalności.
W przypadku mniejszych zadań obejmujących tysiące dokumentów użyj konsoli lub interfejsu wiersza poleceń Firebase. W przypadku większych zadań te narzędzia mogą zacząć przekraczać limit czasu i wymagać wielokrotnego uruchamiania.
Konsola
Dokumenty i kolekcje możesz usuwać na stronieCloud Firestore w konsoli. Usunięcie dokumentu z konsoli powoduje usunięcie wszystkich zagnieżdżonych danych w tym dokumencie, w tym wszystkich podkolekcji.
wiersz poleceń Firebase
Do usuwania dokumentów i kolekcji możesz też użyć wiersza poleceń Firebase. Aby usunąć dane, użyj tego polecenia:
firebase firestore:delete --database=DATABASE_ID PATH
Zastąp DATABASE_ID identyfikatorem bazy danych, a PATH ścieżką do dokumentu lub kolekcji.
W przypadku dużych zadań usuwania (miliony dokumentów) użyj jednej z tych metod:
Zarządzane usuwanie zbiorcze
Cloud Firestore obsługuje zbiorcze usuwanie co najmniej jednej grupy kolekcji. Więcej informacji znajdziesz w artykule Usuwanie danych zbiorczo.
Łącznik Dataflow
Do operacji zbiorczych w bazie danych możesz używać Dataflow. Ta opcja jest najbardziej konfigurowalna, ale wymaga więcej konfiguracji niż inne opcje usuwania zbiorczego. W Cloud Firestore artykule wprowadzającym do Dataflow znajdziesz przykład usuwania wszystkich dokumentów w grupie kolekcji.