Poniższe przykłady pokazują, jak usuwać dokumenty, pola i kolekcje.
Usuwanie dokumentów
Aby usunąć dokument, użyj tych metod delete() specyficznych dla danego 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
kolekcjach podrzędnych. Nadal możesz uzyskać dostęp do dokumentów w kolekcjach podrzędnych za pomocą odniesienia.
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 ścieżce /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 kolekcjach podrzędnych, musisz to zrobić ręcznie. Więcej informacji znajdziesz w sekcji Usuwanie kolekcji.
Usuwanie pól
Aby usunąć określone pola z dokumentu, podczas aktualizowania dokumentu użyj tych metod FieldValue.delete() specyficznych dla danego 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 kolekcję podrzędną w Cloud Firestore, pobierz (odczytaj) wszystkie dokumenty w kolekcji lub kolekcji podrzędnej i usuń je. Ten proces wiąże się z kosztami odczytu i usunięcia. Jeśli masz większe kolekcje, możesz usuwać dokumenty w mniejszych partiach, aby uniknąć błędów braku pamięci. Powtarzaj ten proces, aż usuniesz całą kolekcję lub kolekcję podrzędną.
Usunięcie kolekcji wymaga skoordynowania nieograniczonej liczby pojedynczych żądań usunięcia. Jeśli musisz usunąć całe kolekcje, rób to tylko w zaufanym środowisku serwera. Chociaż można usunąć kolekcję z klienta mobilnego lub internetowego, 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 kolekcji podrzędnych ani optymalizacji wydajności. Więcej informacji o jednym z zalecanych sposobów usuwania kolekcji w środowisku produkcyjnym znajdziesz w artykule Usuwanie kolekcji i kolekcji podrzędnych.
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
Nie zalecamy usuwania kolekcji z klienta.
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
Zasada TTL wyznacza dane pole jako czas wygaśnięcia dokumentów w danej grupie kolekcji. Operacje usunięcia na podstawie TTL są wliczane do kosztów usunięcia dokumentu.
Więcej informacji o ustawianiu TTL znajdziesz w artykule Zarządzanie przechowywaniem danych za pomocą zasad TTL.
Zadania zbiorczego usuwania
Cloud Firestore obsługuje kilka narzędzi do zbiorczego usuwania. Narzędzie należy wybrać na podstawie liczby dokumentów, które trzeba usunąć, oraz wymaganego poziomu konfigurowalności.
W przypadku mniejszych zadań obejmujących tysiące dokumentów użyj konsoli lub 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 stronie Cloud Firestore w konsoli. Usunięcie dokumentu z konsoli powoduje usunięcie wszystkich zagnieżdżonych danych w tym dokumencie, w tym wszystkich kolekcji podrzędnych.
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 (milionów dokumentów) użyj jednej z tych opcji:
Zarządzane usuwanie zbiorcze
Cloud Firestore obsługuje zbiorcze usuwanie co najmniej 1 grupy kolekcji. Więcej informacji znajdziesz w artykule Zbiorcze usuwanie danych.
Łącznik Dataflow
Do wykonywania operacji zbiorczych w bazie danych możesz używać Dataflow. Ta opcja jest najbardziej konfigurowalna, ale wymaga też więcej konfiguracji niż inne opcje zbiorczego usuwania. Więcej informacji znajdziesz w poście na blogu dotyczącym wprowadzenia do łącznika Cloud Firestore dla Dataflow , w którym znajdziesz przykład usuwania wszystkich dokumentów w grupie kolekcji.