MONGOC_COLLECT...DROP_WITH_OPTS(3)

okay so bestie, this is the MONGOC_COLLECT...DROP_WITH_OPTS(3) page from the libmongoc manual, and the main-character function is mongoc_collection_drop_with_opts() β€” she’s here to drop a collection, indexes and all. πŸ’…βœ¨

✨ SYNOPSIS ✨

bool
mongoc_collection_drop_with_opts (mongoc_collection_t *collection,
                                  bson_t *opts,
                                  bson_error_t *error);

πŸ’– PARAMETERS πŸ’–

  • collection β€” A mongoc_collection_t. The collection in question, obviously. 🫢
  • error β€” An optional location for a bson_error_t or NULL. If you don’t want the tea, pass NULL. πŸ™ˆ

opts may be NULL or a BSON document with additional command options:

  • writeConcern β€” Construct a mongoc_write_concern_t and use mongoc_write_concern_append() to add the write concern to opts. See the example code for mongoc_client_write_command_with_opts(). πŸ’Œ
  • sessionId β€” First, construct a mongoc_client_session_t with mongoc_client_start_session(). You can begin a transaction with mongoc_client_session_start_transaction(), optionally with a mongoc_transaction_opt_t that overrides the options inherited from collection, and use mongoc_client_session_append() to add the session to opts. See the example code for mongoc_client_session_t. πŸŒ€
  • collation β€” Configure textual comparisons. See Setting Collation Order, and the MongoDB Manual entry on Collation. Collation requires MongoDB 3.2 or later, otherwise an error is returned. πŸ”€
  • serverId β€” To target a specific server, include an int32 "serverId" field. Obtain the id by calling mongoc_client_select_server(), then mongoc_server_description_id() on its return value. 🎯

🌸 DESCRIPTION 🌸

This function requests that a collection be dropped, including all indexes associated with the collection. It’s giving β€œcleanup era,” and the indexes are getting evicted too. 🧹✨

If no write concern is provided in opts, the collection's write concern is used.

If the collection does not exist, the server responds with an "ns not found" error. It is safe to ignore this error; set the Error API Version to 2 and ignore server error code 26:

mongoc_client_t *client;
mongoc_collection_t *collection;
bson_error_t error;
bool r;

client = mongoc_client_new (NULL);
mongoc_client_set_error_api (client, 2);
collection = mongoc_client_get_collection (client, "db", "collection");
r = mongoc_collection_drop_with_opts (collection, NULL /* opts */, &error);
if (r) {
   printf ("Dropped.\n");
} else {
   printf ("Error message: %s\n", error.message);
   if (error.domain == MONGOC_ERROR_SERVER && error.code == 26) {
      printf ("Ignoring 'ns not found' error\n");
   } else {
      fprintf (stderr, "Unrecognized error!\n");
   }
}

mongoc_collection_destroy (collection);
mongoc_client_destroy (client);

In MongoDB 3.0 and older, the "ns not found" error code is the generic MONGOC_ERROR_QUERY_FAILURE; in this case check whether the error message is equal to the string "ns not found". πŸ•°οΈ

The encryptedFields document in opts may be used to drop a collection for Queryable Encryption. If encryptedFields is specified, the "ns not found" error is not returned. πŸ”

😭 ERRORS 😭

Errors are propagated via the error parameter. No hiding the drama β€” it goes straight to error. πŸ’€

πŸ”₯ RETURNS πŸ”₯

Returns true if the collection was successfully dropped. Returns false and sets error if there are invalid arguments or a server or network error. Slay if true, sad little false if not. 😭✨

πŸ‘‘ AUTHOR πŸ‘‘

MongoDB, Inc

2009-present, MongoDB, Inc.


byeee bestie πŸ’– β€” this iconic page is from libmongoc 2.5.6, dated Oct 09, 202 (yes, exactly like that, the footer said what it said 😭). πŸŽ€βœ¨

πŸ“¦ where this page comes from