Provided by: libmongoc-doc_1.15.0-1_all bug

NAME

       mongoc_read_prefs_set_tags - mongoc_read_prefs_set_tags()

SYNOPSIS

          void
          mongoc_read_prefs_set_tags (mongoc_read_prefs_t *read_prefs,
                                      const bson_t *tags);

PARAMETERS

       · read_prefs: A mongoc_read_prefs_t.

       · tags: A bson_t.

DESCRIPTION

       Sets  the  tags  to  be used for the read preference. Only mongod instances matching these
       tags will be suitable for handling the request.

EXAMPLES

          #include <mongoc/mongoc.h>

          static void
          run_query_with_read_prefs_tags (mongoc_collection_t *collection)
          {
             char *str;
             const bson_t *doc;
             bson_t filter = BSON_INITIALIZER;
             bson_error_t error;
             mongoc_cursor_t *cursor;
             mongoc_read_prefs_t *read_prefs;
             /*  Create a tagset representing
              *  [
              *    {"dc": "ny", "rack": "1" }, // Any node in rack1 in the ny datacenter
              *    {"dc": "ny", "rack": "2" }, // Any node in rack2 in the ny datacenter
              *    {"dc": "ny" },              // Any node in the ny datacenter
              *    {}                          // If all else fails, just any available node
              * ]
              */
             bson_t *tags = BCON_NEW (
                "0", "{", "dc", BCON_UTF8("ny"), "rack", BCON_UTF8("1"), "}",
                "1", "{", "dc", BCON_UTF8("ny"), "rack", BCON_UTF8("2"), "}",
                "2", "{", "dc", BCON_UTF8("ny"), "}",
                "3", "{", "}"
             );

             read_prefs = mongoc_read_prefs_new (MONGOC_READ_SECONDARY);
             mongoc_read_prefs_set_tags (read_prefs, tags);
             bson_destroy (tags);

             cursor =
                mongoc_collection_find_with_opts (collection, &filter, NULL, read_prefs);

             while (mongoc_cursor_next (cursor, &doc)) {
                str = bson_as_canonical_extended_json (doc, NULL);
                printf ("%s\n", str);
                bson_free (str);
             }
             if (mongoc_cursor_error (cursor, &error)) {
                fprintf (stderr, "Cursor error: %s\n", error.message);
             }

             mongoc_cursor_destroy (cursor);
             mongoc_read_prefs_destroy (read_prefs);
             bson_destroy (doc);
          }

          int main (void)
          {
             mongoc_client_t *client;
             mongoc_collection_t *collection;

             mongoc_init ();

             client =
                mongoc_client_new ("mongodb://localhost/?appname=rp_tags&replicaSet=foo");
             mongoc_client_set_error_api (client, 2);
             collection = mongoc_client_get_collection (client, "dbname", "collname");
             run_query_with_read_prefs_tags (collection);

             mongoc_collection_destroy (collection);
             mongoc_client_destroy (client);
             mongoc_cleanup();
          }

AUTHOR

       MongoDB, Inc

COPYRIGHT

       2017-present, MongoDB, Inc