mongoc_collection_command_simple()

Synopsis

bool
mongoc_collection_command_simple (mongoc_collection_t       *collection,
                                  const bson_t              *command,
                                  const mongoc_read_prefs_t *read_prefs,
                                  bson_t                    *reply,
                                  bson_error_t              *error);

Parameters

collection

A mongoc_collection_t.

command

A bson_t containing the command to execute.

read_prefs

An optional mongoc_read_prefs_t. Otherwise, the command uses mode MONGOC_READ_PRIMARY.

reply

A location to initialize a bson_t. This should be on the stack.

error

An optional location for a bson_error_t or NULL.

Description

This is a simplified version of mongoc_collection_command() that returns the first result document in reply. The parameter reply is initialized even upon failure to simplify memory management.

This function tries to unwrap an embedded error in the command when possible. The unwrapped error will be propagated via the error parameter. Additionally, the result document is set in reply.

Errors

Errors are propagated via the error parameter.

Returns

true if successful, otherwise false.

Not all commands have truly succeeded when {ok:1.0} is returned. This could simply mean the RPC successfully was executed.

Example

The following is an example of executing the collection stats command.

Command Example

#include <mongoc.h>
#include <bcon.h>
#include <stdio.h>

static void
print_collection_stats (mongoc_collection_t *collection)
{
   bson_error_t error;
   const char *name;
   bson_t *cmd;
   bson_t reply;

   name = mongoc_collection_get_name (collection);
   cmd = BCON_NEW ("collStats", BCON_UTF8 (name));

   if (mongoc_collection_command_simple (collection, cmd, NULL, &reply, &error)) {
      str = bson_as_json (&reply, NULL);
      printf ("%s\n", str);
      bson_free (str);
   } else {
      fprintf (stderr, "%s\n", error.message);
   }

   bson_destroy (&reply);
   bson_destroy (cmd);
}