MONGOC_DATABASE_COMMAND(3)
π MONGOC_DATABASE_COMMAND(3) β bestie edition β¨
okay so before we even get into it β this one lives in libmongoc, and it's the database-level command cursor thing. Sit down, hydrate, let's go π«Ά
β οΈ WARNING β Deprecated since version 1.29.0: This function is deprecated and should not be used in new code. Use mongoc_database_command_simple() instead.
Like, she still works, but she's on her way out. New code should NOT be caught using her. Periodt π
β¨ SYNOPSIS β¨
mongoc_cursor_t *
mongoc_database_command (mongoc_database_t *database,
mongoc_query_flags_t flags,
uint32_t skip,
uint32_t limit,
uint32_t batch_size,
const bson_t *command,
const bson_t *fields,
const mongoc_read_prefs_t *read_prefs);
π¦ DESCRIPTION π¦
So basically this function builds you a cursor that will actually run the command when you call mongoc_cursor_next() on it. Not before. It's giving "I'll do it when you ask me to" energy π
Important tea though: the database's read preference, read concern, and write concern are not applied to the command. And mongoc_cursor_next() will not check the server response for a write concern error or a write concern timeout. So don't come crying to her about write concern, she didn't sign up for that.
Also β this function is not considered a retryable read operation. No cap.
π PARAMETERS π
databaseβ Amongoc_database_t. The main character here obviously πflagsβ Unused. Literally just sitting there. Ignore her.skipβ Unused. Bestie, leave it alone.limitβ Unused. Don't even look at it.batch_sizeβ Unused. She's decorative, that's the vibe πcommandβ Abson_tcontaining the command. This one actually matters β¨fieldsβ Unused. Just vibes.read_prefsβ An optionalmongoc_read_prefs_t. If you don't pass one, the command uses modeMONGOC_READ_PRIMARY.
π MIGRATING π
mongoc_database_command() is deprecated. Yeah. So here's the glow-up tutorial, before-and-after style π
Here's the example that uses mongoc_database_command():
π Before
const bson_t *reply;
bson_t *cmd = BCON_NEW ("find", "foo", "filter", "{", "}");
mongoc_cursor_t *cursor = mongoc_database_command (db,
MONGOC_QUERY_NONE /* unused */,
0 /* unused */,
0 /* unused */,
0 /* unused */,
cmd,
NULL /* unused */,
NULL /* read prefs */);
// Expect cursor to return exactly one document for the command reply.
EXPECT (mongoc_cursor_next (cursor, &reply));
bson_error_t error;
if (mongoc_cursor_error (cursor, &error)) {
FAIL ("Expected no error, got: %s\n", error.message);
}
// Expect successful reply to contain "ok": 1
bson_iter_t iter;
EXPECT (bson_iter_init_find (&iter, reply, "ok") && bson_iter_as_int64 (&iter) == 1);
// Expect cursor to return no other documents.
EXPECT (!mongoc_cursor_next (cursor, &reply));
mongoc_cursor_destroy (cursor);
bson_destroy (cmd);
The above code block may be rewritten to use mongoc_database_command_simple() instead, as shown below:
πΈ After
bson_t reply;
bson_error_t error;
bson_t *cmd = BCON_NEW ("find", "foo", "filter", "{", "}");
if (!mongoc_database_command_simple (db, cmd, NULL /* read prefs */, &reply, &error)) {
FAIL ("Expected no error, got: %s\n", error.message);
}
// Expect successful reply to contain "ok": 1
bson_iter_t iter;
EXPECT (bson_iter_init_find (&iter, &reply, "ok") && bson_iter_as_int64 (&iter) == 1);
bson_destroy (&reply);
bson_destroy (cmd);
See? The glow-up is real. Same energy, way fewer unused params π§
π RETURNS π
This function returns a newly allocated mongoc_cursor_t that you should free with mongoc_cursor_destroy() when you're done with it β no leaving her on read, okay?
The returned mongoc_cursor_t is never NULL, even on error. That's right, even when everything's a mess she still shows up π
And the user must call mongoc_cursor_next() on the returned mongoc_cursor_t to execute the initial command. It doesn't run itself, bestie, that's on you.
Cursor errors can be checked with mongoc_cursor_error_document(). It always fills out the bson_error_t if an error occurred, and optionally includes a server reply document if the error occurred server-side. So thorough of her π
β οΈ WARNING: Failure to handle the result of this function is a programming error. Like fr fr, handle your results. Don't be that girl.
π AUTHOR π
MongoDB, Inc
π COPYRIGHT π
2009-present, MongoDB, Inc.
and that's the whole page, bestie! β¨ This was libmongoc version 1.30.13, dated Oct 09, 2026, and yeah β the man page said MONGOC_DATABASE_COMMAND(3) at the top and at the bottom, we said it twice, iconic behavior π
π
π¦ where this page comes from
- fedora 43: mongo-c-driver-devel 1.30.13-1.fc43 Β· Apache-2.0 AND ISC AND MIT AND Zlib
- fedora 43: mongo-c-driver-devel 1.30.13-1.fc43 Β· Apache-2.0 AND ISC AND MIT AND Zlib
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms