Visão geral
Neste guia, você pode aprender como usar o driver C para remover documentos de uma coleção MongoDB realizando operações de exclusão.
Uma operação de exclusão remove um ou mais documentos de uma collection do MongoDB . Você pode executar uma operação de exclusão utilizando as funções mongoc_collection_delete_one() ou mongoc_collection_delete_many().
Dados de amostra
Os exemplos neste guia utilizam a coleção do restaurants no banco de dados do sample_restaurants a partir do conjunto de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia MongoDB Get Started.
Excluir operações
Você pode executar operações de exclusão usando as seguintes funções:
mongoc_collection_delete_one(), que exclui o primeiro documento que corresponde aos critérios do Atlas Searchmongoc_collection_delete_many(), que exclui todos os documentos que correspondem aos critérios do Atlas Search
Cada função de exclusão aceita os seguintes parâmetros:
Collection: especifica a collection a ser modificada.
Localização dos resultados: especifica um ponteiro para o armazenamento substituível que conterá os resultados da operação
NULLou.Localização do erro: especifica um local para um valor de erro
NULLou.
Excluir um documento
Use a seguinte sintaxe para excluir um documento:
bson_t *filter = BCON_NEW("<field name>", BCON_UTF8("<value>")); bson_error_t error; if (!mongoc_collection_delete_one(collection, filter, NULL, NULL, &error)) { fprintf(stderr, "Delete error: %s\n", error.message); } bson_destroy(filter);
O exemplo a seguir usa a função mongoc_collection_delete_one() para remover um documento na coleção restaurants que tem um valor name de "Ready Penny Inn":
bson_t *filter = BCON_NEW("name", BCON_UTF8("Ready Penny Inn")); bson_error_t error; if (!mongoc_collection_delete_one(collection, filter, NULL, NULL, &error)) { printf("Delete error: %s\n", error.message); } bson_destroy(filter);
Excluir vários documentos
Use a seguinte sintaxe para excluir vários documentos:
bson_t *filter = BCON_NEW("<field name>", BCON_UTF8("<value>")); bson_error_t error; if (!mongoc_collection_delete_many(collection, filter, NULL, NULL, &error)) { fprintf(stderr, "Delete error: %s\n", error.message); } bson_destroy(filter);
O exemplo seguinte utiliza a função mongoc_collection_delete_many() para remover todos os documentos na collection restaurants que têm um valor borough de "Brooklyn":
bson_t *filter = BCON_NEW("borough", BCON_UTF8("Brooklyn")); bson_error_t error; if (!mongoc_collection_delete_many(collection, filter, NULL, NULL, &error)) { printf("Delete error: %s\n", error.message); } bson_destroy(filter);
Personalizar a operação de exclusão
Você pode modificar o comportamento das funções mongoc_collection_delete_one() e mongoc_collection_delete_many() passando um documento BSON que especifica os valores das opções. A tabela a seguir descreve algumas opções que você pode definir no documento:
Campo | Descrição |
|---|---|
| Especifica o tipo de agrupamento de linguagem a ser usado ao comparar texto. Para obter mais informações, consulte agrupamentos no manual do MongoDB Server. |
| Define o write concern para a operação. |
| Especifica um documento com uma lista de valores para melhorar a legibilidade da operação. Os valores devem ser expressões constantes ou fechadas que não façam referência aos campos do documento. Para obter mais informações, consulte a declaração let no manual do MongoDB Server. |
| Um comentário a ser anexado à operação. Para obter mais informações, consulte o guia inserir campos de comando no manual do MongoDB Server. |
O exemplo seguinte chama a função mongoc_collection_delete_many() para excluir todos os documentos na coleção restaurants que têm um valor de name contendo a string "Mongo". Ele também define a opção comment para adicionar um comentário à operação:
bson_t *filter = BCON_NEW("name", "{", "$regex", BCON_UTF8("Mongo"), "}"); bson_error_t error; bson_t opts; bson_init(&opts); BCON_APPEND(&opts, "comment", BCON_UTF8("Deleting Mongo restaurants")); if (!mongoc_collection_delete_many(collection, filter, &opts, NULL, &error)) { printf("Delete error: %s\n", error.message); } bson_destroy(filter); bson_destroy(&opts);
Dica
Se você usar a função mongoc_collection_delete_one() em vez de mongoc_collection_delete_many() no exemplo anterior, o driver excluirá apenas o primeiro documento com valor de name contendo "Mongo".
Documentação da API
Para saber mais sobre qualquer uma das funções discutidas nesta guia, consulte a seguinte documentação da API: