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 version 9
Użyj metody deleteDoc()
:
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web version 8
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()
:
Gdy usuniesz dokument, Cloud Firestore nie usuwa automatycznie dokumentów ze swoich podkolekcji. Nadal możesz uzyskać dostęp do dokumentów podzbioru przez odniesienie. Na przykład możesz 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 pojawiają się w konsoli , ale nie pojawiają się w wynikach zapytań i migawkach.
Jeśli chcesz usunąć dokument i wszystkie dokumenty w jego podzbiorach, musisz to zrobić ręcznie. Aby uzyskać więcej informacji, zobacz Usuwanie kolekcji .
Usuń pola
Aby usunąć określone pola z dokumentu, podczas aktualizowania dokumentu użyj następujących metod FieldValue.delete()
specyficznych dla języka:
Web version 9
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 version 8
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 kolekcji lub podkolekcji i usuń je. Ten proces wiąże się zarówno z kosztami odczytu, jak i usuwania. 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 podkolekcję.
Usunięcie kolekcji wymaga skoordynowania nieograniczonej liczby indywidualnych żądań usunięcia. Jeśli chcesz usunąć całe kolekcje, zró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 o jednym zalecanym podejściu do usuwania kolekcji w środowisku produkcyjnym, zobacz Usuwanie kolekcji i kolekcji podrzędnych .
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
Usuwanie kolekcji z klienta nie jest zalecane.
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ą Firebase CLI
Możesz także użyć Firebase CLI do usuwania dokumentów i kolekcji. 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 zagnieżdżonych danych w tym dokumencie, w tym wszelkich podkolekcji.
Usuń dane za pomocą zasad TTL
Polityka TTL wyznacza dane pole jako czas wygaśnięcia dokumentów w danej grupie kolekcji. Operacje usuwania TTL są wliczane do kosztów usuwania dokumentów.
Aby uzyskać informacje na temat ustawiania TTL, zobacz Zarządzanie przechowywaniem danych za pomocą zasad TTL .
Więcej informacji na temat kodów błędów i rozwiązywania problemów z opóźnieniami podczas usuwania danych można znaleźć na stronie rozwiązywania problemów .
Usuń dane za pomocą Dataflow
Dataflow to świetne narzędzie do masowych operacji na bazie danych Firestore. We wpisie wprowadzającym na blogu Firestore Connector for Dataflow znajduje się przykład usuwania wszystkich dokumentów w grupie kolekcji.