Nos exemplos a seguir, você vê como excluir documentos, campos e coleções.
Excluir documentos
Para excluir um documento, use o método delete()
:
Versão 9 para a Web
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Versão 8 para a Web
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Swift
db.collection("cities").document("DC").delete() { err in if let err = err { print("Error removing document: \(err)") } else { print("Document successfully removed!") } }
Objective-C
[[[self.db collectionWithPath:@"cities"] documentWithPath:@"DC"] deleteDocumentWithCompletion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error removing document: %@", error); } else { NSLog(@"Document successfully removed!"); } }];
Java
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); } });
Kotlin+KTX
db.collection("cities").document("DC") .delete() .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully deleted!") } .addOnFailureListener { e -> Log.w(TAG, "Error deleting document", e) }
Java
Python
Python
C++
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
Go
PHP
$db->collection('samples/php/cities')->document('DC')->delete();
Unity
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
DocumentReference cityRef = db.Collection("cities").Document("DC"); await cityRef.DeleteAsync();
Ruby
Quando você exclui um documento, o Cloud Firestore não remove automaticamente os documentos nas subcoleções dele. Ainda é possível acessar os documentos da subcoleção para fins de consulta.
Por exemplo, é possível acessar o documento no caminho
/mycoll/mydoc/mysubcoll/mysubdoc
, mesmo se
você excluir o documento ancestral em /mycoll/mydoc
.
Os documentos ancestrais inexistentes são exibidos no console, mas não aparecem nos resultados de consulta e snapshots.
Se quiser excluir um documento e todos os que estão contidos nas subcoleções dele, você precisará fazer isso manualmente. Para mais informações, consulte Excluir coleções.
Excluir campos
Para excluir campos específicos de um documento, use o método FieldValue.delete()
ao atualizá-lo:
Versão 9 para a Web
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() });
Versão 8 para a Web
var cityRef = db.collection('cities').doc('BJ'); // Remove the 'capital' field from the document var removeCapital = cityRef.update({ capital: firebase.firestore.FieldValue.delete() });
Swift
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") } }
Objective-C
[[[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"); } }];
Java
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>() { // ... // ...
Kotlin+KTX
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
Python
Python
C++
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
Node.js
Go
PHP
$cityRef = $db->collection('samples/php/cities')->document('BJ'); $cityRef->update([ ['path' => 'capital', 'value' => FieldValue::deleteField()] ]);
Unity
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } }; await cityRef.UpdateAsync(updates);
Ruby
Excluir coleções
Para excluir uma coleção ou subcoleção completa no Cloud Firestore, recupere todos os documentos dentro da coleção ou subcoleção e os exclua. Se você tem coleções maiores, exclua os documentos em lotes menores para evitar erros de falta de memória. Repita o processo até excluir toda a coleção ou subcoleção.
A exclusão de uma coleção exige a coordenação de um número ilimitado de solicitações de exclusão individuais. Se você precisar excluir coleções inteiras, faça isso somente a partir de um ambiente de servidor confiável. É possível excluir uma coleção de um cliente da Web/dispositivos móveis, mas isso tem implicações negativas para a segurança e o desempenho.
Os snippets abaixo estão simplificados e não incluem processamento de erros, segurança, exclusão de subcoleções ou aumento de desempenho. Para saber mais sobre uma abordagem recomendada para excluir coleções em produção, consulte Como excluir coleções e subcoleções.
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.
Java
// Deleting collections from an Android client is not recommended.
Kotlin+KTX
// Deleting collections from an Android client is not recommended.
Java
Python
Python
C++
// This is not supported. Delete data using CLI as discussed below.
Node.js
Go
PHP
function data_delete_collection(string $projectId, string $collectionName, int $batchSize) { // Create the Cloud Firestore client $db = new FirestoreClient([ 'projectId' => $projectId, ]); $collectionReference = $db->collection($collectionName); $documents = $collectionReference->limit($batchSize)->documents(); while (!$documents->isEmpty()) { foreach ($documents as $document) { printf('Deleting document %s' . PHP_EOL, $document->id()); $document->reference()->delete(); } $documents = $collectionReference->limit($batchSize)->documents(); } }
Unity
// This is not supported. Delete data using CLI as discussed below.
C#
private static async Task DeleteCollection(CollectionReference collectionReference, int batchSize) { QuerySnapshot snapshot = await collectionReference.Limit(batchSize).GetSnapshotAsync(); IReadOnlyList<DocumentSnapshot> documents = snapshot.Documents; while (documents.Count > 0) { foreach (DocumentSnapshot document in documents) { Console.WriteLine("Deleting document {0}", document.Id); await document.Reference.DeleteAsync(); } snapshot = await collectionReference.Limit(batchSize).GetSnapshotAsync(); documents = snapshot.Documents; } Console.WriteLine("Finished deleting all documents from the collection."); }
Ruby
Excluir dados com a CLI do Firebase
Você também pode usar a CLI do FirebaseI para excluir documentos e coleções. Use o comando a seguir para excluir dados:
firebase firestore:delete [options] <<path>>
Excluir dados com o console
É possível excluir documentos e coleções da página do Cloud Firestore no console. A exclusão de um documento do console exclui todos os dados aninhados desse documento, incluindo quaisquer subcoleções.