Poniższe przykłady pokazują, jak usuwać dokumenty, pola i kolekcje.
Usuń dokumenty
Aby usunąć dokument, użyj następujących metod delete()
specyficznych dla języka:
Web modular API
Użyj metody deleteDoc()
:
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web namespaced API
Użyj metody delete()
:
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Szybki
Użyj metody delete()
:
db.collection("cities").document("DC").delete() { err in if let err = err { print("Error removing document: \(err)") } else { print("Document successfully removed!") } }
Cel 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"), );
Jawa
Użyj metody delete()
:
Pyton
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()
:
Iść
Użyj metody Delete()
:
PHP
Użyj metody delete()
:
Jedność
Użyj metody DeleteAsync()
:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
Użyj metody DeleteAsync()
:
Rubin
Użyj metody delete()
:
Kiedy usuwasz dokument, Cloud Firestore nie usuwa automatycznie dokumentów ze swoich podkolekcji. Dostęp do dokumentów podkolekcji można uzyskać w dalszym ciągu przez odniesienie. Na przykład możesz uzyskać dostęp do dokumentu pod ścieżką /mycoll/mydoc/mysubcoll/mysubdoc
nawet jeśli usuniesz dokument nadrzędny pod /mycoll/mydoc
.
Nieistniejące dokumenty nadrzędne pojawiają się w konsoli , ale nie pojawiają się w wynikach zapytań i migawkach.
Jeśli chcesz usunąć dokument i wszystkie dokumenty w jego podkolekcjach, musisz to zrobić ręcznie. Aby uzyskać więcej informacji, zobacz temat Usuń kolekcje .
Usuń pola
Aby usunąć określone pola z dokumentu, podczas aktualizacji dokumentu użyj następujących metod FieldValue.delete()
specyficznych dla języka:
Web modular API
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 namespaced API
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() });
Szybki
Użyj metody FieldValue.delete()
:
db.collection("cities").document("BJ").updateData([ "capital": FieldValue.delete(), ]) { err in if let err = err { print("Error updating document: \(err)") } else { print("Document successfully updated") } }
Cel 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);
Jawa
Użyj metody FieldValue.delete()
:
Pyton
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()
:
Iść
Użyj metody firestore.Delete
:
PHP
Użyj metody FieldValue::deleteField()
:
Jedność
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
:
Rubin
Użyj metody firestore.field_delete
:
Usuń kolekcje
Aby usunąć całą kolekcję lub podkolekcję w Cloud Firestore, pobierz (przeczytaj) wszystkie dokumenty w ramach kolekcji lub podkolekcji i usuń je. Proces ten wiąże się z kosztami odczytu i usunięcia. Jeśli masz większe zbiory, możesz chcieć 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ę.
Usuwanie kolekcji wymaga koordynowania nieograniczonej liczby indywidualnych żądań usunięcia. Jeśli chcesz usunąć całe kolekcje, rób to tylko z zaufanego środowiska serwerowego. Chociaż możliwe jest usunięcie kolekcji z klienta mobilnego/internetowego, ma to negatywny wpływ na bezpieczeństwo i wydajność.
Poniższe fragmenty są nieco uproszczone i nie dotyczą obsługi błędów, bezpieczeństwa, usuwania podkolekcji ani maksymalizacji wydajności. Aby dowiedzieć się więcej na temat zalecanego podejścia do usuwania kolekcji w środowisku produkcyjnym, zobacz Usuwanie kolekcji i podkolekcji .
Sieć
// Deleting collections from a Web client is not recommended.
Szybki
// Deleting collections from an Apple client is not recommended.
Cel 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
Nie zaleca się usuwania kolekcji z klienta.
Jawa
Pyton
Python
C++
// This is not supported. Delete data using CLI as discussed below.
Node.js
Iść
PHP
Jedność
// This is not supported. Delete data using CLI as discussed below.
C#
Rubin
Usuń dane za pomocą interfejsu wiersza polecenia Firebase
Możesz także użyć interfejsu wiersza polecenia Firebase, aby usunąć dokumenty i kolekcje. Użyj następującego polecenia, aby usunąć dane:
firebase firestore:delete [options] <<path>>
Usuń dane za pomocą konsoli
Możesz usuwać dokumenty i kolekcje ze strony Cloud Firestore w konsoli . Usunięcie dokumentu z konsoli powoduje usunięcie wszystkich danych zagnieżdżonych w tym dokumencie, łącznie ze wszystkimi podkolekcjami.
Usuń dane za pomocą zasad TTL
Polityka TTL wyznacza dane pole jako termin ważności dokumentów w danej grupie inkasowej. Operacje usuwania TTL wliczają się do kosztów usunięcia dokumentu.
Aby uzyskać informacje na temat ustawiania TTL, zobacz Zarządzanie przechowywaniem danych za pomocą zasad TTL .
Aby uzyskać więcej informacji na temat kodów błędów i sposobów rozwiązywania problemów z opóźnieniami podczas usuwania danych, odwiedź stronę rozwiązywania problemów .
Usuń dane za pomocą Dataflow
Dataflow to świetne narzędzie do masowych operacji na bazie danych Firestore. W poście na blogu wprowadzającym do oprogramowania łącznika Firestore dla Dataflow znajduje się przykład usuwania wszystkich dokumentów w grupie kolekcji.