class collection database::create_view(bsoncxx::string::view_or_value name, bsoncxx::string::view_or_value view_on, const options::create_view& options) { bsoncxx::builder::basic::document options_builder; options_builder.append(kvp("viewOn", view_on)); if (options.collation()) { options_builder.append(kvp("collation", *options.collation())); } if (options.pipeline()) { options_builder.append(kvp("pipeline", options.pipeline()->view_array())); } if (options.write_concern()) { options_builder.append(kvp("writeConcern", options.write_concern()->to_document())); } libbson::scoped_bson_t opts_bson{options_builder.view()}; bson_error_t error; auto result = libmongoc::database_create_collection( _get_impl().database_t, name.terminated().data(), opts_bson.bson(), &error); if (!result) { throw_exception<operation_exception>(error); } return mongocxx::collection(*this, result); }
bool database::has_collection(bsoncxx::string::view_or_value name) const { bson_error_t error; auto result = libmongoc::database_has_collection(_get_impl().database_t, name.terminated().data(), &error); if (error.domain != 0) { throw_exception<operation_exception>(error); } return result; }
void collection::rename(bsoncxx::string::view_or_value new_name, bool drop_target_before_rename) { bson_error_t error; auto result = libmongoc::collection_rename( _get_impl().collection_t, _get_impl().database_name.c_str(), new_name.terminated().data(), drop_target_before_rename, &error); if (!result) { throw_exception<operation_exception>(error); } }
class collection database::create_collection(bsoncxx::string::view_or_value name, const options::create_collection& options) { bson_error_t error; libbson::scoped_bson_t opts_bson{options.to_document()}; auto result = libmongoc::database_create_collection( _get_impl().database_t, name.terminated().data(), opts_bson.bson(), &error); if (!result) { throw_exception<operation_exception>(error); } return mongocxx::collection(*this, static_cast<void*>(result)); }
void collection::rename(bsoncxx::string::view_or_value new_name, bool drop_target_before_rename, const bsoncxx::stdx::optional<mongocxx::write_concern>& wc) { bson_error_t error; bsoncxx::builder::basic::document opts_doc; if (wc) { opts_doc.append(kvp("writeConcern", wc->to_document())); } scoped_bson_t opts_bson{opts_doc.view()}; bool result = libmongoc::collection_rename_with_opts(_get_impl().collection_t, _get_impl().database_name.c_str(), new_name.terminated().data(), drop_target_before_rename, opts_bson.bson(), &error); if (!result) { throw_exception<operation_exception>(error); } }
class collection database::create_view(bsoncxx::string::view_or_value name, bsoncxx::string::view_or_value view_on, const options::create_view& options) { document options_builder{}; options_builder << "viewOn" << view_on; if (options.collation()) { options_builder << "collation" << *options.collation(); } if (options.pipeline()) { options_builder << "pipeline" << options.pipeline()->view_array(); } libbson::scoped_bson_t opts_bson{options_builder.view()}; bson_error_t error; auto result = libmongoc::database_create_collection( _get_impl().database_t, name.terminated().data(), opts_bson.bson(), &error); if (!result) { throw_exception<operation_exception>(error); } return mongocxx::collection(*this, result); }
collection::collection(const database& database, bsoncxx::string::view_or_value collection_name) : _impl(stdx::make_unique<impl>( libmongoc::database_get_collection(database._get_impl().database_t, collection_name.terminated().data()), database.name(), database._get_impl().client_impl)) {}
class collection database::create_collection(bsoncxx::string::view_or_value name, const options::create_collection& options) { document options_builder{}; if (options.auto_index_id()) { options_builder << "autoIndexId" << *options.auto_index_id(); } if (options.capped()) { options_builder << "capped" << *options.capped(); } if (options.collation()) { options_builder << "collation" << *options.collation(); } if (options.max()) { options_builder << "max" << *options.max(); } if (options.no_padding()) { options_builder << "flags" << (*options.no_padding() ? 0x10 : 0x00); } if (options.size()) { options_builder << "size" << *options.size(); } if (options.storage_engine()) { options_builder << "storageEngine" << *options.storage_engine(); } if (options.validation_criteria()) { auto validation_level_to_string = [](validation_criteria::validation_level level) { switch (level) { case validation_criteria::validation_level::k_off: return "off"; case validation_criteria::validation_level::k_moderate: return "moderate"; case validation_criteria::validation_level::k_strict: return "strict"; } MONGOCXX_UNREACHABLE; }; auto validation_action_to_string = [](validation_criteria::validation_action action) { switch (action) { case validation_criteria::validation_action::k_warn: return "warn"; case validation_criteria::validation_action::k_error: return "error"; } MONGOCXX_UNREACHABLE; }; auto validation_criteria = *options.validation_criteria(); if (validation_criteria.rule()) { options_builder << "validator" << *validation_criteria.rule(); } if (validation_criteria.level()) { options_builder << "validationLevel" << validation_level_to_string(*validation_criteria.level()); } if (validation_criteria.action()) { options_builder << "validationAction" << validation_action_to_string(*validation_criteria.action()); } } bson_error_t error; libbson::scoped_bson_t opts_bson{options_builder.view()}; auto result = libmongoc::database_create_collection( _get_impl().database_t, name.terminated().data(), opts_bson.bson(), &error); if (!result) { throw_exception<operation_exception>(error); } return mongocxx::collection(*this, result); }
class collection database::create_collection( bsoncxx::string::view_or_value name, const options::create_collection& collection_options, const stdx::optional<class write_concern>& write_concern) { bsoncxx::builder::basic::document options_builder; if (write_concern) { options_builder.append(kvp("writeConcern", write_concern->to_document())); } if (collection_options.auto_index_id()) { options_builder.append(kvp("autoIndexId", *collection_options.auto_index_id())); } if (collection_options.capped()) { options_builder.append(kvp("capped", *collection_options.capped())); } if (collection_options.collation()) { options_builder.append(kvp("collation", *collection_options.collation())); } if (collection_options.max()) { options_builder.append(kvp("max", *collection_options.max())); } if (collection_options.no_padding()) { options_builder.append(kvp("flags", (*collection_options.no_padding() ? 0x10 : 0x00))); } if (collection_options.size()) { options_builder.append(kvp("size", *collection_options.size())); } if (collection_options.storage_engine()) { options_builder.append(kvp("storageEngine", *collection_options.storage_engine())); } if (collection_options.validation_criteria()) { auto validation_level_to_string = [](validation_criteria::validation_level level) { switch (level) { case validation_criteria::validation_level::k_off: return "off"; case validation_criteria::validation_level::k_moderate: return "moderate"; case validation_criteria::validation_level::k_strict: return "strict"; } MONGOCXX_UNREACHABLE; }; auto validation_action_to_string = [](validation_criteria::validation_action action) { switch (action) { case validation_criteria::validation_action::k_warn: return "warn"; case validation_criteria::validation_action::k_error: return "error"; } MONGOCXX_UNREACHABLE; }; auto validation_criteria = *collection_options.validation_criteria(); if (validation_criteria.rule()) { options_builder.append(kvp("validator", *validation_criteria.rule())); } if (validation_criteria.level()) { options_builder.append( kvp("validationLevel", validation_level_to_string(*validation_criteria.level()))); } if (validation_criteria.action()) { options_builder.append(kvp("validationAction", validation_action_to_string(*validation_criteria.action()))); } } bson_error_t error; libbson::scoped_bson_t opts_bson{options_builder.view()}; auto result = libmongoc::database_create_collection( _get_impl().database_t, name.terminated().data(), opts_bson.bson(), &error); if (!result) { throw_exception<operation_exception>(error); } return mongocxx::collection(*this, result); }
bool database::has_collection(bsoncxx::string::view_or_value name) const { bson_error_t error; return libmongoc::database_has_collection(_get_impl().database_t, name.terminated().data(), &error); }
uri::uri(bsoncxx::string::view_or_value uri_string) : _impl(stdx::make_unique<impl>(libmongoc::uri_new(uri_string.terminated().data()))) { }