Delete Documents

For the complete MongoDB documentation index, see www.mongodb.com/docs/llms.txt

Delete Documents

Overview

In this guide, you can learn how to use the C driver to remove documents from a MongoDB collection by performing delete operations.

A delete operation removes one or more documents from a MongoDB collection. You can perform a delete operation by using the mongoc_collection_delete_one() or mongoc_collection_delete_many() functions.

Sample Data

The examples in this guide use the restaurants collection in the sample_restaurants database from the Atlas sample datasets. To learn how to create a free MongoDB Atlas cluster and load the sample datasets, see the MongoDB Get Started guide.

Delete Operations

You can perform delete operations by using the following functions:

  • mongoc_collection_delete_one(), which deletes the first document that matches the search criteria

  • mongoc_collection_delete_many(), which deletes all documents that match the search criteria

Each delete function accepts the following parameters:

  • Collection: Specifies the collection to modify.

  • Query filter document: Specifies which collection documents to delete. For more information about query filters, see the [Query Filter Documents section](https://www.mongodb.com/docs/manual/core/document/#query-filter-documents in the MongoDB Server manual.

  • Results location: Specifies a pointer to overwritable storage that will contain operation results, or NULL.

  • Error location: Specifies a location for an error value, or NULL.

Delete One Document

Use the following syntax to delete a document:

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);

The following example uses the mongoc_collection_delete_one() function to remove a document in the restaurants collection that has a name value of “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);

Delete Multiple Documents

Use the following syntax to delete multiple documents:

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);

The following example uses the mongoc_collection_delete_many() function to remove all documents in the restaurants collection that have a borough value of “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);

Customize the Delete Operation

You can modify the behavior of the mongoc_collection_delete_one() and mongoc_collection_delete_many() functions by passing a BSON document that specifies option values. The following table describes some options you can set in the document:

Field Description
collation Specifies the kind of language collation to use when comparing text. For more information, see [Collation](https://www.mongodb.com/docs/manual/reference/collation/#std-label-collation in the MongoDB Server manual.Type: bson_t
writeConcern Sets the write concern for the operation.Defaults to the write concern of the namespace.Type: mongoc_write_concern_t
let 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](https://www.mongodb.com/docs/manual/reference/command/delete/#std-label-delete-let-syntax in the MongoDB Server manual.Type: bson_t
comment A comment to attach to the operation. For more information, see the [insert command fields](https://www.mongodb.com/docs/manual/reference/command/insert/#command-fields guide in the MongoDB Server manual.Type: bson_value_t

The following example calls the mongoc_collection_delete_many() function to delete all documents in the restaurants collection that have a name value containing the string “Mongo”. It also sets the comment option to add a comment to the operation:

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);

Tip:

If you use the mongoc_collection_delete_one() function instead of mongoc_collection_delete_many() in the preceding example, the driver deletes only the first document that has a name value containing “Mongo”.

API Documentation

To learn more about any of the functions discussed in this guide, see the following API documentation: