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 restaurants coleção do sample_restaurants no banco de dados do a partir do conjunto de dados de amostra do Atlas . Para saber como criar um cluster gratuito do MongoDB Atlas e carregar os conjuntos de dados de amostra, consulte o guia Introdução ao MongoDB <https://www.mongodb.com/pt-br/docs/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.
documento de filtro de query : especifica quais documentos de coleção excluir. Para obter mais informações sobre filtros de query, consulte a seção Documentos de filtro de query no manual do MongoDB Server .
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
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
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 |
|---|---|
| Specifies the kind of language collation to use when comparing
text. For more information, see Collation
in the MongoDB Server manual. Type: bson_t |
| Sets the write concern for the operation. Defaults to the write concern of the namespace. Type: mongoc_write_concern_t |
| Specifies a document with a list of values to improve operation readability.
Values must be constant or closed expressions that don't reference document
fields. For more information, see the let statement in the
MongoDB Server manual. Type: bson_t |
| A comment to attach to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual. Type: bson_value_t |
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: