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

NAME

       mongoc_find_and_modify_opts_set_bypass_document_validation                               -
       mongoc_find_and_modify_opts_set_bypass_document_validation()

SYNOPSIS

          bool
          mongoc_find_and_modify_opts_set_bypass_document_validation (
             mongoc_find_and_modify_opts_t *opts, bool bypass);

       This option is only available when talking to MongoDB 3.2 and later.

PARAMETERS

       · opts: A mongoc_find_and_modify_opts_t.

       · bypass: If the schema validation rules should be ignored.

DESCRIPTION

       Adds bypassDocumentValidation argument to the builder.

       When authentication is enabled, the authenticated user must have either the  "dbadmin"  or
       "restore" roles to bypass document validation.

RETURNS

       Returns  true if it successfully added the option to the builder, otherwise false and logs
       an error.

SETTING BYPASSDOCUMENTVALIDATION

       bypass.c

          void
          fam_bypass (mongoc_collection_t *collection)
          {
             mongoc_find_and_modify_opts_t *opts;
             bson_t reply;
             bson_t *update;
             bson_error_t error;
             bson_t query = BSON_INITIALIZER;
             bool success;

             /* Find Zlatan Ibrahimovic, the striker */
             BSON_APPEND_UTF8 (&query, "firstname", "Zlatan");
             BSON_APPEND_UTF8 (&query, "lastname", "Ibrahimovic");
             BSON_APPEND_UTF8 (&query, "profession", "Football player");

             /* Bump his age */
             update = BCON_NEW ("$inc", "{", "age", BCON_INT32 (1), "}");

             opts = mongoc_find_and_modify_opts_new ();
             mongoc_find_and_modify_opts_set_update (opts, update);
             /* He can still play, even though he is pretty old. */
             mongoc_find_and_modify_opts_set_bypass_document_validation (opts, true);

             success = mongoc_collection_find_and_modify_with_opts (
                collection, &query, opts, &reply, &error);

             if (success) {
                char *str;

                str = bson_as_canonical_extended_json (&reply, NULL);
                printf ("%s\n", str);
                bson_free (str);
             } else {
                fprintf (
                   stderr, "Got error: \"%s\" on line %d\n", error.message, __LINE__);
             }

             bson_destroy (&reply);
             bson_destroy (update);
             bson_destroy (&query);
             mongoc_find_and_modify_opts_destroy (opts);
          }

       Outputs:

          {
             "lastErrorObject" : {"updatedExisting" : true, "n" : 1},
                                 "value" : {
                                    "_id" : {"$oid" : "56562a99d13e6d86239c7b00"},
                                    "age" : 34,
                                    "firstname" : "Zlatan",
                                    "goals" : 342,
                                    "lastname" : "Ibrahimovic",
                                    "profession" : "Football player",
                                    "position" : "striker"
                                 },
                                           "ok" : 1
          }

AUTHOR

       MongoDB, Inc

COPYRIGHT

       2017-present, MongoDB, Inc

1.15.0                              MONGOC_FIND1AND2MODIFY_OPTS_SET_BYPASS_DOCUMENT_VALIDATION(3)