Excluir dados em massa

Use o serviço de exclusão em massa gerenciado para excluir dados do seu banco de dados. Esse recurso oferece suporte à exclusão de um ou mais grupos de coleções.

Esta página descreve como excluir documentos em massa usando o serviço de exclusão em massa gerenciado. O serviço de exclusão em massa gerenciado do Firestore com compatibilidade com o MongoDB está disponível na ferramenta de linha de comando gcloud e na API REST do Firestore.

Antes de começar

Antes de usar o serviço de exclusão em massa gerenciado, é necessário concluir as seguintes tarefas:

  1. Ative o faturamento para o projeto do Google Cloud . Somente projetos do Google Cloud com faturamento ativado podem usar a funcionalidade de exclusão em massa.
  2. Verifique se a conta tem as permissões necessárias para o Firestore com compatibilidade com o MongoDB. Se você for o proprietário do projeto, sua conta já vai ter as permissões necessárias. Caso contrário, os seguintes papéis concedem as permissões necessárias para operações de exclusão em massa:

Configurar gcloud para seu projeto

É possível iniciar operações de exclusão em massa pelo console do Google Cloud ou pela ferramenta de linha de comando gcloud. Para usar gcloud, configure a ferramenta de linha de comando e conecte-se ao seu projeto de uma das seguintes maneiras:

Excluir dados em massa

Uma operação de exclusão em massa primeiro encontra todos os documentos aplicáveis no seu banco de dados e os exclui em lotes. Você ainda pode consultar ou ler esses documentos, mas os resultados podem variar com base no progresso. A exclusão em massa não exclui documentos adicionados ou modificados após o início da operação.

Excluir em massa grupos de coleções específicos

gcloud

Para excluir em massa grupos de coleções específicos, use a flag --collection-ids. A operação exclui apenas os grupos de coleções com os IDs fornecidos.

gcloud firestore bulk-delete \
--collection-ids=[COLLECTION_GROUP_ID_1_OR_KIND_1],[COLLECTION_GROUP_ID_2_OR_KIND_2],[SUBCOLLECTION_GROUP_ID_1_OR_KIND_3] \
--database=[DATABASE]
Por exemplo, considere vários documentos que representam restaurantes na coleção restaurants do banco de dados cymbal. Você também tem coleções para ratings, reviews e outlets. Para excluir em massa as coleções restaurants e reviews, o comando fica assim:

gcloud firestore bulk-delete \
--collection-ids=restaurants,reviews \
--database='cymbal'

Gerenciar operações de exclusão em massa

Depois de iniciar uma operação de exclusão em massa, o Firestore com compatibilidade com o MongoDB atribui um nome exclusivo a ela. Use o nome da operação para excluir, cancelar ou verificar o status dela.

Os nomes das operações são prefixados com projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/, por exemplo:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

No entanto, é possível omitir o prefixo ao especificar um nome de operação para os comandos describe, cancel e delete.

Listar todas as operações de exclusão em massa

gcloud

Use o comando operations list para conferir todas as operações em execução e concluídas recentemente, incluindo as de exclusão em massa:

gcloud firestore operations list

Verificar o status da operação

gcloud

Use o comando operations describe para mostrar o status de uma operação de exclusão em massa.

gcloud firestore operations describe [OPERATION_NAME]

Estimar o tempo de conclusão

Uma solicitação para o status de uma operação de longa duração retorna as métricas workEstimated e workCompleted. Cada uma dessas métricas é retornada no número de bytes e no número de entidades:

  • workEstimated mostra o número total estimado de bytes e documentos que uma operação processará. O Firestore com compatibilidade com o MongoDB pode omitir essa métrica se não puder fazer uma estimativa.

  • workCompleted mostra o número de bytes e documentos processados até o momento. Após a conclusão da operação, o valor mostrará o número total de bytes e documentos que foram realmente processados, o que pode ser maior do que o valor de workEstimated.

Divida workCompleted por workEstimated para ter uma estimativa aproximada do andamento. A estimativa pode ser imprecisa, porque ela depende da coleção de estatísticas em atraso.

Cancelar uma operação

gcloud

Use o comando operations cancel para interromper uma operação em andamento:

gcloud firestore operations cancel [OPERATION_NAME]

Cancelar uma operação em execução não desfaz a operação. Uma operação de exclusão em massa cancelada não recupera os documentos excluídos.

Excluir uma operação

Use o comando gcloud firestore operations delete para remover uma operação concluída da lista de operações recentes. Para cancelar uma operação em andamento, use a operação de cancelamento anterior.

gcloud firestore operations delete [OPERATION_NAME]

Faturamento e preços para operações de exclusão em massa

É necessário ativar o faturamento para o projeto do Google Cloud antes de usar o serviço gerenciado de exclusão em massa.

As operações de exclusão em massa são cobradas por leituras e exclusões de documentos de acordo com as taxas listadas em Preços da edição Enterprise do Firestore.

Você recebe uma cobrança de uma unidade de gravação para cada parcela de 1 KiB de dados de documento ou de entrada de índice excluídos.

Você recebe uma cobrança mínima de uma unidade de leitura por documento excluído. Se o tamanho do nome do documento for maior que 4 KiB, você vai receber uma cobrança de uma unidade de leitura por parcela de 4 KiB, arredondada para cima, para esse documento.

O Firestore com compatibilidade com o MongoDB cobra pelo trabalho real realizado. Se a operação for cancelada ou falhar devido a um erro do usuário, você vai ser cobrado pelo progresso feito. O Firestore com compatibilidade com o MongoDB não cobra por leituras ou exclusões de documentos que não foram excluídos, como documentos modificados após o início da operação de exclusão. O custo será atribuído no dia da conclusão da operação.

As operações de exclusão em massa não acionam os alertas do orçamento doGoogle Cloud até a conclusão. Da mesma forma, leituras e exclusões realizadas durante uma operação de exclusão em massa são aplicadas ao uso do Nível sem custos financeiros após a conclusão da operação. As operações de exclusão em massa não afetam o uso mostrado na seção de uso do console.

Conferir os custos de exclusão em massa

As operações de exclusão em massa aplicam o rótulo goog-firestoremanaged:bulkdelete às operações faturadas. Na página de relatórios do Cloud Billing, é possível usar esse rótulo para conferir os custos relacionados às operações de exclusão em massa.