Eliminare documenti e campi
Gli esempi riportati di seguito mostrano come eliminare documenti, campi e raccolte.
Elimina documenti
Per eliminare un documento, utilizza i seguenti metodi delete()
specifici per la lingua:
Versione web 9
Utilizza il metodo deleteDoc()
:
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Versione web 8
Utilizza il metodo delete()
:
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Swift
Utilizza il metodo delete()
:
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Objective-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
Android
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
Android
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"), );
Java
Utilizza il metodo delete()
:
Python
Utilizza il metodo delete()
:
Python
(Async)
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()
:
Vai
Utilizza il metodo Delete()
:
PHP
Utilizza il metodo delete()
:
Unity
Utilizza il metodo DeleteAsync()
:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
Utilizza il metodo DeleteAsync()
:
Ruby
Utilizza il metodo delete()
:
Quando elimini un documento, Firestore non elimina automaticamente
i documenti all'interno delle relative
raccolte secondarie. Puoi comunque accedere ai documenti della sottoraccolta tramite riferimento.
Ad esempio, puoi accedere al documento nel percorso
/mycoll/mydoc/mysubcoll/mysubdoc
anche
se elimini il documento principale in /mycoll/mydoc
.
I documenti antenati inesistenti vengono visualizzati nella console, ma non nei risultati delle query e negli snapshot.
Se vuoi eliminare un documento e tutti i documenti all'interno delle relative sottoraccolte, devi farlo manualmente. Per saperne di più, consulta la sezione Eliminare le raccolte.
Eliminare campi
Per eliminare campi specifici da un documento, utilizza i seguenti metodi FieldValue.delete()
specifici per la lingua
quando aggiorni un documento:
Versione web 9
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() });
Versione web 8
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() });
Swift
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)") }
Objective-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
Android
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
Android
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);
Java
Utilizza il metodo FieldValue.delete()
:
Python
Utilizza il metodo firestore.DELETE_FIELD
:
Python
(Async)
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()
:
Vai
Utilizza il metodo firestore.Delete
:
PHP
Utilizza il metodo FieldValue::deleteField()
:
Unity
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
:
Ruby
Utilizza il metodo firestore.field_delete
:
Eliminare le raccolte
Per eliminare un'intera raccolta o sottoraccolta in Firestore, recupera (leggi) tutti i documenti all'interno della raccolta o della sottoraccolta ed eliminali. Questo processo comporta costi di lettura ed eliminazione. Se hai raccolte più grandi, ti consigliamo di 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 richieste di eliminazione individuali. Se devi eliminare intere raccolte, fallo solo da un ambiente server attendibile. Sebbene sia possibile eliminare una raccolta da un client web/mobile, questa operazione ha implicazioni negative per la sicurezza e le prestazioni.
Gli snippet riportati di seguito sono in qualche modo semplificati e non riguardano la gestione degli errori, la sicurezza, l'eliminazione delle raccolte secondarie o l'ottimizzazione del rendimento. Per scoprire di più su un approccio consigliato per eliminare le raccolte in produzione, consulta Eliminare raccolte e sottoraccolte.
Web
// 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
Android
// Deleting collections from an Android client is not recommended.
Java
Android
// Deleting collections from an Android client is not recommended.
Dart
L'eliminazione delle raccolte dal client non è consigliata.
Java
Python
Python
(Async)
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
Eliminare i dati con la CLI Firebase
Puoi anche utilizzare l'interfaccia a riga di comando di Firebase per eliminare documenti e raccolte. Utilizza questo comando per eliminare i dati:
firebase firestore:delete [options] <<path>>
Eliminare i dati con la console
Puoi eliminare documenti e raccolte dalla pagina Firestore nella console. L'eliminazione di un documento dalla console comporta l'eliminazione di tutti i dati nidificati nel documento, comprese le eventuali raccolte secondarie.
Eliminare i dati con le policy TTL
Una policy TTL designa un determinato campo come ora di scadenza dei documenti in un determinato gruppo di raccolte. Le operazioni di eliminazione TTL vengono conteggiate ai fini dei costi di eliminazione dei documenti.
Per informazioni sull'impostazione del TTL, vedi Gestire la conservazione dei dati con le norme TTL.
Per ulteriori informazioni sui codici di errore e su come risolvere i problemi di latenza durante l'eliminazione dei dati, consulta la pagina per la risoluzione dei problemi.
Eliminare i dati con Dataflow
Dataflow è un ottimo strumento per le operazioni collettive sul database Firestore. Il post del blog sull'introduzione del connettore Firestore per Dataflow contiene un esempio di eliminazione di tutti i documenti in un gruppo di raccolte.
Utilizzare l'eliminazione collettiva gestita
Firestore supporta l'eliminazione collettiva di uno o più gruppi di raccolte. Per ulteriori informazioni, consulta Eliminare dati in blocco.