logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

void

Author

       MongoDB, Inc

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

Parameters

read_prefs: A mongoc_read_prefs_t.

       • tags: A bson_t.

Synopsis

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

See Also