Elimine documentos e campos
Os exemplos seguintes demonstram como eliminar documentos, campos e coleções.
Elimine documentos
Para eliminar um documento, use os seguintes delete()
métodos específicos do idioma:
Versão Web 9
Use o método deleteDoc()
:
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Versão Web 8
Use o método delete()
:
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Swift
Use o método delete()
:
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Objective-C
Use o método 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
Use o método 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
Use o método 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
Use o método delete()
:
db.collection("cities").doc("DC").delete().then( (doc) => print("Document deleted"), onError: (e) => print("Error updating document $e"), );
Java
Use o método delete()
:
Python
Use o método delete()
:
Python
(assíncrono)
Use o método delete()
:
C++
Use o método 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
Use o método delete()
:
Ir
Use o método Delete()
:
PHP
Use o método delete()
:
Unity
Use o método DeleteAsync()
:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
Use o método DeleteAsync()
:
Ruby
Use o método delete()
:
Quando elimina um documento, o Firestore não elimina automaticamente os documentos nas respetivas subcoleções. Continua a poder aceder aos documentos da subcoleção por referência.
Por exemplo, pode aceder ao documento no caminho /mycoll/mydoc/mysubcoll/mysubdoc
mesmo que elimine o documento principal em /mycoll/mydoc
.
Os documentos antecessores inexistentes aparecem na consola, mas não aparecem nos resultados das consultas nem nas capturas instantâneas.
Se quiser eliminar um documento e todos os documentos nas respetivas subcoleções, tem de o fazer manualmente. Para mais informações, consulte o artigo Elimine coleções.
Elimine campos
Para eliminar campos específicos de um documento, use os seguintes métodos FieldValue.delete()
específicos do idioma
quando atualiza um documento:
Versão Web 9
Use o método 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() });
Versão Web 8
Use o método 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
Use o método 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
Use o método 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
Use o método 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
Use o método 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
Use o método 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
Use o método FieldValue.delete()
:
Python
Use o método firestore.DELETE_FIELD
:
Python
(assíncrono)
Use o método firestore.DELETE_FIELD
:
C++
Use o método FieldValue::Delete()
:
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
Node.js
Use o método FieldValue.delete()
:
Ir
Use o método firestore.Delete
:
PHP
Use o método FieldValue::deleteField()
:
Unity
Use o método FieldValue.Delete
:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
Use o método FieldValue.Delete
:
Ruby
Use o método firestore.field_delete
:
Elimine coleções
Para eliminar uma coleção ou uma subcoleção inteira no Firestore, obtenha (leia) todos os documentos na coleção ou subcoleção e elimine-os. Este processo incorre em custos de leitura e eliminação. Se tiver coleções maiores, recomendamos que elimine os documentos em lotes mais pequenos para evitar erros de falta de memória. Repita o processo até eliminar toda a coleção ou subcoleção.
A eliminação de uma coleção requer a coordenação de um número ilimitado de pedidos de eliminação individuais. Se precisar de eliminar coleções inteiras, faça-o apenas a partir de um ambiente de servidor fidedigno. Embora seja possível eliminar uma recolha de um cliente Web/para dispositivos móveis, esta ação tem implicações negativas para a segurança e o desempenho.
Os seguintes fragmentos são simplificados para maior clareza e não incluem o processamento de erros, a segurança, a eliminação de subcoleções nem as otimizações de desempenho. Para saber mais acerca de uma abordagem recomendada para eliminar coleções em produção, consulte Eliminar 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.
Kotlin
Android
// Deleting collections from an Android client is not recommended.
Java
Android
// Deleting collections from an Android client is not recommended.
Dart
Não é recomendado eliminar coleções do cliente.
Java
Python
Python
(assíncrono)
C++
// This is not supported. Delete data using CLI as discussed below.
Node.js
Ir
PHP
Unity
// This is not supported. Delete data using CLI as discussed below.
C#
Ruby
Elimine dados com políticas de TTL
Uma política de TTL designa um determinado campo como o tempo de validade dos documentos num determinado grupo de coleções. As operações de eliminação de TTL contam para os custos de eliminação de documentos.
Para obter informações sobre a definição do TTL, consulte o artigo Faça a gestão da retenção de dados com políticas de TTL.
Tarefas de eliminação em massa
O Firestore suporta várias ferramentas para a eliminação em massa. Deve selecionar uma ferramenta com base no número de documentos que precisa de eliminar e no nível de configurabilidade de que precisa.
Para tarefas mais pequenas de milhares de documentos, use a consola ou a Firebase CLI. Para tarefas maiores, estas ferramentas podem começar a exceder o limite de tempo e exigir que as execute várias vezes.
Consola
Pode eliminar documentos e coleções da página do Firestore na consola. A eliminação de um documento da consola elimina todos os dados aninhados nesse documento, incluindo quaisquer subcoleções.
Firebase CLI
Também pode usar a Firebase CLI para eliminar documentos e coleções. Use o seguinte comando para eliminar dados:
firebase firestore:delete --database=DATABASE_ID PATH
Substitua DATABASE_ID pelo ID da base de dados e PATH por um caminho para um documento ou uma coleção.
Para tarefas de eliminação grandes (milhões de documentos), use uma das seguintes opções:
Eliminação em massa gerida
O Firestore suporta a eliminação em massa de um ou mais grupos de coleções. Para mais informações, consulte o artigo Elimine dados em massa.
Conetor do Dataflow
Pode usar o Dataflow para operações em massa na sua base de dados. Esta opção é a mais configurável, mas também requer mais configuração do que outras opções de eliminação em massa. Consulte a publicação no blogue sobre a introdução ao Dataflow, que tem um exemplo de eliminação de todos os documentos num grupo de coleções.