Poniższe przykłady pokazują, jak usuwać dokumenty, pola i kolekcji.
Usuń dokumenty
Aby usunąć dokument, użyj metod delete()
właściwych 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+KTX
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 wykona automatycznie tych czynności
usuń dokumenty znajdujące się na ich
podzbiory. Nadal możesz korzystać z dokumentów podkolekcji przy użyciu odwołania.
Możesz na przykład otworzyć dokument na ścieżce
/mycoll/mydoc/mysubcoll/mysubdoc
równomiernego
jeśli usuniesz dokument nadrzędny pod adresem /mycoll/mydoc
.
W konsoli pojawiają się dokumenty dotyczące nieistniejących elementów nadrzędnych. ale nie pojawiają się w wynikach zapytań ani zrzutach ekranu.
Jeśli chcesz usunąć dokument i wszystkie znajdujące się w nim dokumenty podzbiorów, musisz to zrobić ręcznie. Więcej informacji: Usuń kolekcje.
Usuń pola
Aby usunąć określone pola z dokumentu, użyj metod FieldValue.delete()
odpowiednich dla danego języka
podczas aktualizowania dokumentu:
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+KTX
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
:
Usuń kolekcje
Aby usunąć całą kolekcję lub kolekcję podrzędną w usłudze Cloud Firestore: Pobieranie (odczyt) wszystkich dokumentów w kolekcji lub podkolekcji i usuwanie . Ten proces wiąże się z kosztami zarówno odczytu, jak i usuwania. Jeśli masz większe w kolekcjach, można usuwać dokumenty w mniejszych partiach, aby uniknąć „brak pamięci”. Powtarzaj te czynności, aż usuniesz całą kolekcji lub podzbioru.
Usunięcie kolekcji wymaga skoordynowania nieograniczonej liczby poszczególnych próśb o usunięcie. Jeśli chcesz usunąć całe kolekcje, zrób to tylko z zaufanego środowiska serwera. Można usunąć kolekcję przez klienta mobilnego/internetowego, ma to negatywny wpływ na bezpieczeństwo i wydajność.
Poniższe fragmenty kodu są nieco uproszczone i nie zawierają obsługi błędów, aby zwiększyć bezpieczeństwo, usunąć podkolekcje lub zmaksymalizować wydajność. Więcej informacji na temat jednego zalecanego sposobu usuwania kolekcji w środowisku produkcyjnym znajdziesz 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+KTX
// Deleting collections from an Android client is not recommended.
Java
// Deleting collections from an Android client is not recommended.
Dart
Usuwanie kolekcji z 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ą interfejsu wiersza poleceń Firebase
Możesz też użyć interfejsu wiersza poleceń Firebase, aby usunąć dokumenty i kolekcje. Aby usunąć dane, użyj tego polecenia:
firebase firestore:delete [options] <<path>>
Usuwanie danych za pomocą konsoli
Dostępne opcje usuwać dokumenty i kolekcje na stronie Cloud Firestore w konsoli. Usunięcie dokumentu z konsoli powoduje usunięcie wszystkich zagnieżdżonych danych, dokument, w tym kolekcje podrzędne.
Usuwanie danych za pomocą zasad TTL
Zasada TTL wyznacza dane pole jako czas ważności dokumentów w danej grupy kolekcji. Operacje usuwania TTL są wliczane do limitu usunięcia dokumentu
Więcej informacji o ustawianiu TTL znajdziesz w sekcji Zarządzanie przechowywaniem danych przy użyciu zasad TTL.
Więcej informacji o kodach błędów i rozwiązywaniu problemów z opóźnieniem podczas usuwania danych znajdziesz na stronie rozwiązywania problemów.
Usuwanie danych za pomocą Dataflow
Dataflow to świetne narzędzie do operacji zbiorczych na bazie danych Firestore. Oprogramowanie sprzęgające Firestore dla usługi Dataflow w poście na blogu zawiera przykład usunięcia wszystkich dokumentów w grupę kolekcji.