Elimina documenti e campi
I seguenti esempi mostrano come eliminare documenti, campi raccolte.
Elimina documenti
Per eliminare un documento, utilizza i seguenti metodi delete()
specifici della lingua:
Versione web 9
Usa il metodo deleteDoc()
:
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Versione web 8
Usa il metodo delete()
:
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Swift
Usa il metodo delete()
:
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Objective-C
Usa 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
Android
Usa 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
Usa 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); } });
Darte
Usa il metodo delete()
:
db.collection("cities").doc("DC").delete().then( (doc) => print("Document deleted"), onError: (e) => print("Error updating document $e"), );
Java
Usa il metodo delete()
:
Python
Usa il metodo delete()
:
Python
(asinc)
Usa il metodo delete()
:
C++
Usa 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
Usa il metodo delete()
:
Vai
Usa il metodo Delete()
:
PHP
Usa il metodo delete()
:
Unity
Usa il metodo DeleteAsync()
:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
Usa il metodo DeleteAsync()
:
Ruby
Usa il metodo delete()
:
Quando elimini un documento, Firestore non esegue automaticamente
eliminare i documenti all'interno
sottoraccolte. Puoi comunque accedere ai documenti della raccolta secondaria come riferimento.
Ad esempio, puoi accedere al documento nel percorso
/mycoll/mydoc/mysubcoll/mysubdoc
pari
se elimini il documento predecessore in /mycoll/mydoc
.
I documenti predecessore inesistenti vengono visualizzati nella console, ma non appariranno nei risultati delle query e negli snapshot.
Se vuoi eliminare un documento e tutti i documenti al suo interno devi eseguire questa operazione manualmente. Per ulteriori informazioni, vedi Eliminare le raccolte.
Elimina campi
Per eliminare campi specifici da un documento, utilizza i seguenti metodi FieldValue.delete()
specifici della lingua
quando aggiorni un documento:
Versione web 9
Usa 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
Usa 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
Usa 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
Usa 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
Android
Usa 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
Usa 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>() { // ... // ...
Darte
Usa 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
Usa il metodo FieldValue.delete()
:
Python
Usa il metodo firestore.DELETE_FIELD
:
Python
(asinc)
Usa il metodo firestore.DELETE_FIELD
:
C++
Usa 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
Usa il metodo FieldValue.delete()
:
Vai
Usa il metodo firestore.Delete
:
PHP
Usa il metodo FieldValue::deleteField()
:
Unity
Usa il metodo FieldValue.Delete
:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
Usa il metodo FieldValue.Delete
:
Ruby
Usa il metodo firestore.field_delete
:
Elimina raccolte
Per eliminare un'intera raccolta o sottoraccolta in Firestore: recuperare (leggere) tutti i documenti all'interno della raccolta o sottoraccolta ed eliminare che li rappresentano. Questo processo prevede costi sia di lettura che di eliminazione. Se hai immagini più grandi raccolte, è consigliabile eliminare i documenti in batch più piccoli per evitare di esaurimento della memoria. Ripeti la procedura finché non avrai eliminato l'intero in una raccolta o sottoraccolta.
L'eliminazione di una raccolta richiede il coordinamento di un numero illimitato singole richieste di eliminazione. Se devi eliminare intere raccolte, puoi farlo solo da un ambiente server attendibile. Sebbene sia possibile eliminare una raccolta da un client web/mobile, ciò ha implicazioni negative in termini di sicurezza e prestazioni.
Gli snippet seguenti sono un po' semplificati e non riguardano la gestione degli errori, sicurezza, l'eliminazione di sottoraccolte o la massimizzazione delle prestazioni. Per scoprire di più su un approccio consigliato per eliminare le raccolte in produzione, consulta Eliminazione di raccolte e raccolte secondarie.
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+KTX
Android
// Deleting collections from an Android client is not recommended.
Java
Android
// Deleting collections from an Android client is not recommended.
Darte
L'eliminazione delle raccolte dal client non è consigliata.
Java
Python
Python
(asinc)
C++
// This is not supported. Delete data using CLI as discussed below.
Node.js
Vai
PHP
Unity
// This is not supported. Delete data using CLI as discussed below.
C#
Ruby
Elimina i dati con l'interfaccia a riga di comando di Firebase
Puoi anche utilizzare l'interfaccia a riga di comando di Firebase per eliminare documenti e raccolte. Utilizza il seguente comando per eliminare i dati:
firebase firestore:delete [options] <<path>>
Elimina i dati con la console
Puoi elimina documenti e raccolte dalla pagina Firestore nella console. L'eliminazione di un documento dalla console elimina tutti i dati nidificati al suo interno documento, incluse eventuali raccolte secondarie.
Elimina i dati con criteri TTL
Un criterio TTL designa un determinato campo come data di scadenza per i documenti in un un determinato gruppo di raccolte. Le operazioni di eliminazione TTL vengono conteggiate ai fini dell'eliminazione dei documenti costi aggiuntivi.
Per informazioni sull'impostazione del 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 le operazioni collettive sul tuo database Firestore. La Il post del blog dell'introduzione al connettore Firestore per Dataflow presenta un esempio dell'eliminazione di tutti i documenti in un gruppo di raccolte.