Les exemples suivants montrent comment supprimer des documents, des champs et des collections.
Supprimer des documents
Pour supprimer un document, utilisez les méthodes delete()
spécifiques à la langue suivantes :
Web modular API
Utilisez la méthode deleteDoc()
:
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web namespaced API
Utilisez la méthode delete()
:
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Rapide
Utilisez la méthode delete()
:
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Objectif c
Utilisez la méthode 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
Utilisez la méthode delete()
:
db.collection("cities").document("DC") .delete() .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully deleted!") } .addOnFailureListener { e -> Log.w(TAG, "Error deleting document", e) }
Java
Utilisez la méthode 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
Utilisez la méthode delete()
:
db.collection("cities").doc("DC").delete().then( (doc) => print("Document deleted"), onError: (e) => print("Error updating document $e"), );
Java
Utilisez la méthode delete()
:
Python
Utilisez la méthode delete()
:
Python
Utilisez la méthode delete()
:
C++
Utilisez la méthode 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; } });
Noeud.js
Utilisez la méthode delete()
:
Aller
Utilisez la méthode Delete()
:
PHP
Utilisez la méthode delete()
:
Unité
Utilisez la méthode DeleteAsync()
:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
Utilisez la méthode DeleteAsync()
:
Rubis
Utilisez la méthode delete()
:
Lorsque vous supprimez un document, Cloud Firestore ne supprime pas automatiquement les documents de ses sous-collections. Vous pouvez toujours accéder aux documents de la sous-collection par référence. Par exemple, vous pouvez accéder au document au chemin /mycoll/mydoc/mysubcoll/mysubdoc
même si vous supprimez le document ancêtre au /mycoll/mydoc
.
Les documents ancêtres inexistants apparaissent dans la console , mais ils n'apparaissent pas dans les résultats de requête ni dans les instantanés.
Si vous souhaitez supprimer un document et tous les documents de ses sous-collections, vous devez le faire manuellement. Pour plus d'informations, consultez Supprimer des collections .
Supprimer des champs
Pour supprimer des champs spécifiques d'un document, utilisez les méthodes FieldValue.delete()
spécifiques à la langue suivantes lorsque vous mettez à jour un document :
Web modular API
Utilisez la méthode 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
Utilisez la méthode 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() });
Rapide
Utilisez la méthode FieldValue.delete()
:
do { try await db.collection("cities").document("BJ").updateData([ "capital": FieldValue.delete(), ]) print("Document successfully updated") } catch { print("Error updating document: \(error)") }
Objectif c
Utilisez la méthode 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
Utilisez la méthode 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
Utilisez la méthode 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
Utilisez la méthode 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
Utilisez la méthode FieldValue.delete()
:
Python
Utilisez la méthode firestore.DELETE_FIELD
:
Python
Utilisez la méthode firestore.DELETE_FIELD
:
C++
Utilisez la méthode FieldValue::Delete()
:
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
Noeud.js
Utilisez la méthode FieldValue.delete()
:
Aller
Utilisez la méthode firestore.Delete
:
PHP
Utilisez la méthode FieldValue::deleteField()
:
Unité
Utilisez la méthode FieldValue.Delete
:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
Utilisez la méthode FieldValue.Delete
:
Rubis
Utilisez la méthode firestore.field_delete
:
Supprimer des collections
Pour supprimer une collection ou une sous-collection entière dans Cloud Firestore, récupérez (lisez) tous les documents de la collection ou de la sous-collection et supprimez-les. Ce processus entraîne des coûts de lecture et de suppression. Si vous disposez de collections plus importantes, vous souhaiterez peut-être supprimer les documents par lots plus petits pour éviter les erreurs de mémoire insuffisante. Répétez le processus jusqu'à ce que vous ayez supprimé l'intégralité de la collection ou de la sous-collection.
La suppression d'une collection nécessite la coordination d'un nombre illimité de demandes de suppression individuelles. Si vous devez supprimer des collections entières, faites-le uniquement à partir d'un environnement de serveur approuvé. Bien qu'il soit possible de supprimer une collection d'un client mobile/Web, cela a des implications négatives en matière de sécurité et de performances.
Les extraits ci-dessous sont quelque peu simplifiés et ne traitent pas de la gestion des erreurs, de la sécurité, de la suppression de sous-collections ou de l'optimisation des performances. Pour en savoir plus sur une approche recommandée pour supprimer des collections en production, consultez Suppression de collections et de sous-collections .
la toile
// Deleting collections from a Web client is not recommended.
Rapide
// Deleting collections from an Apple client is not recommended.
Objectif 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
La suppression des collections du client n'est pas recommandée.
Java
Python
Python
C++
// This is not supported. Delete data using CLI as discussed below.
Noeud.js
Aller
PHP
Unité
// This is not supported. Delete data using CLI as discussed below.
C#
Rubis
Supprimer des données avec la CLI Firebase
Vous pouvez également utiliser la CLI Firebase pour supprimer des documents et des collections. Utilisez la commande suivante pour supprimer des données :
firebase firestore:delete [options] <<path>>
Supprimer des données avec la console
Vous pouvez supprimer des documents et des collections de la page Cloud Firestore de la console . La suppression d'un document de la console supprime toutes les données imbriquées dans ce document, y compris les sous-collections.
Supprimer des données avec des politiques TTL
Une stratégie TTL désigne un champ donné comme délai d'expiration pour les documents d'un groupe de collecte donné. Les opérations de suppression TTL sont prises en compte dans les coûts de suppression de vos documents.
Pour plus d'informations sur la définition de la durée de vie, consultez Gérer la conservation des données avec des stratégies TTL .
Pour plus d'informations sur les codes d'erreur et sur la façon de résoudre les problèmes de latence lors de la suppression de données, consultez la page de dépannage .
Supprimer des données avec Dataflow
Dataflow est un excellent outil pour les opérations groupées sur votre base de données Firestore. Le billet de blog d'introduction du connecteur Firestore pour Dataflow présente un exemple de suppression de tous les documents d'un groupe de collection.