Gli esempi seguenti dimostrano come eliminare documenti, campi e raccolte.
Elimina documenti
Per eliminare un documento, utilizzare i seguenti metodi delete()
specifici della lingua:
Web modular API
Utilizza il metodo deleteDoc()
:
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web namespaced API
Utilizza il metodo delete()
:
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Veloce
Utilizza il metodo delete()
:
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Obiettivo-C
Utilizza il metodo 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
Utilizza il metodo delete()
:
db.collection("cities").document("DC") .delete() .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully deleted!") } .addOnFailureListener { e -> Log.w(TAG, "Error deleting document", e) }
Java
Utilizza il metodo 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
Utilizza il metodo delete()
:
db.collection("cities").doc("DC").delete().then( (doc) => print("Document deleted"), onError: (e) => print("Error updating document $e"), );
Giava
Utilizza il metodo delete()
:
Pitone
Utilizza il metodo delete()
:
Python
Utilizza il metodo delete()
:
C++
Utilizza il metodo 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
Utilizza il metodo delete()
:
Andare
Utilizza il metodo Delete()
:
PHP
Utilizza il metodo delete()
:
Unità
Utilizza il metodo DeleteAsync()
:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
Utilizza il metodo DeleteAsync()
:
Rubino
Utilizza il metodo delete()
:
Quando elimini un documento, Cloud Firestore non elimina automaticamente i documenti nelle sue sottoraccolte. È comunque possibile accedere ai documenti della sottoraccolta tramite riferimento. Ad esempio, puoi accedere al documento nel percorso /mycoll/mydoc/mysubcoll/mysubdoc
anche se elimini il documento antenato in /mycoll/mydoc
.
Nella console vengono visualizzati documenti antenati inesistenti, ma non vengono visualizzati nei risultati delle query e negli snapshot.
Se desideri eliminare un documento e tutti i documenti nelle sue sottoraccolte, devi farlo manualmente. Per ulteriori informazioni, vedere Elimina raccolte .
Elimina campi
Per eliminare campi specifici da un documento, utilizza i seguenti metodi FieldValue.delete()
specifici della lingua quando aggiorni un documento:
Web modular API
Utilizza il metodo 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
Utilizza il metodo 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() });
Veloce
Utilizza il metodo FieldValue.delete()
:
do { try await db.collection("cities").document("BJ").updateData([ "capital": FieldValue.delete(), ]) print("Document successfully updated") } catch { print("Error updating document: \(error)") }
Obiettivo-C
Utilizza il metodo 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
Utilizza il metodo 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
Utilizza il metodo 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
Utilizza il metodo 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);
Giava
Utilizza il metodo FieldValue.delete()
:
Pitone
Utilizza il metodo firestore.DELETE_FIELD
:
Python
Utilizza il metodo firestore.DELETE_FIELD
:
C++
Utilizza il metodo FieldValue::Delete()
:
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
Node.js
Utilizza il metodo FieldValue.delete()
:
Andare
Utilizza il metodo firestore.Delete
:
PHP
Utilizza il metodo FieldValue::deleteField()
:
Unità
Utilizza il metodo FieldValue.Delete
:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
Utilizza il metodo FieldValue.Delete
:
Rubino
Utilizza il metodo firestore.field_delete
:
Elimina raccolte
Per eliminare un'intera raccolta o sottoraccolta in Cloud Firestore, recupera (leggi) tutti i documenti all'interno della raccolta o sottoraccolta ed eliminali. Questo processo comporta costi di lettura ed eliminazione. Se disponi di raccolte più grandi, potresti voler eliminare i documenti in batch più piccoli per evitare errori di memoria insufficiente. Ripeti la procedura finché non avrai eliminato l'intera raccolta o sottoraccolta.
L'eliminazione di una raccolta richiede il coordinamento di un numero illimitato di singole richieste di eliminazione. Se è necessario eliminare intere raccolte, farlo solo da un ambiente server attendibile. Anche se è possibile eliminare una raccolta da un client mobile/web, ciò ha implicazioni negative sulla sicurezza e sulle prestazioni.
I frammenti di seguito sono in qualche modo semplificati e non riguardano la gestione degli errori, la sicurezza, l'eliminazione di sottoraccolte o l'ottimizzazione delle prestazioni. Per ulteriori informazioni su un approccio consigliato all'eliminazione delle raccolte in produzione, consulta Eliminazione di raccolte e sottoraccolte .
ragnatela
// Deleting collections from a Web client is not recommended.
Veloce
// Deleting collections from an Apple client is not recommended.
Obiettivo-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
Non è consigliabile eliminare le raccolte dal client.
Giava
Pitone
Python
C++
// This is not supported. Delete data using CLI as discussed below.
Node.js
Andare
PHP
Unità
// This is not supported. Delete data using CLI as discussed below.
C#
Rubino
Elimina i dati con la CLI Firebase
Puoi anche utilizzare la CLI di Firebase per eliminare documenti e raccolte. Utilizzare il seguente comando per eliminare i dati:
firebase firestore:delete [options] <<path>>
Elimina i dati con la console
Puoi eliminare documenti e raccolte dalla pagina Cloud Firestore nella console . L'eliminazione di un documento dalla console elimina tutti i dati nidificati in quel documento, incluse eventuali sottoraccolte.
Elimina i dati con i criteri TTL
Una policy TTL designa un determinato campo come data di scadenza per i documenti in un determinato gruppo di raccolte. Le operazioni di eliminazione TTL vengono conteggiate nei costi di eliminazione dei documenti.
Per informazioni sull'impostazione di TTL, consulta Gestire la conservazione dei dati con i criteri TTL .
Per ulteriori informazioni sui codici di errore e su come risolvere i problemi di latenza durante l'eliminazione dei dati, consulta la pagina di risoluzione dei problemi .
Elimina i dati con Dataflow
Dataflow è un ottimo strumento per operazioni in blocco sul tuo database Firestore. Il post di blog introduttivo al connettore Firestore per Dataflow contiene un esempio di eliminazione di tutti i documenti in un gruppo di raccolte.