userver: components::Mongo Class Reference
No Matches
components::Mongo Class Reference

#include <userver/storages/mongo/component.hpp>

Detailed Description

MongoDB client component.

Provides access to a MongoDB database.

Dynamic options:

Static configuration example:

dbalias: taxi
appname: userver-sample
conn_timeout: 2s
so_timeout: 10s
queue_timeout: 1s
initial_size: 16
max_size: 128
idle_limit: 64
connecting_limit: 8
local_threshold: 15ms
maintenance_period: 15s
stats_verbosity: terse

You must specify one of dbalias or dbconnection.

Static options:

Name Description Default value
dbalias name of the database in secdist config (if available)
dbconnection connection string (used if no dbalias specified)
appname application name for the DB server userver
conn_timeout connection timeout 2s
so_timeout socket timeout 10s
queue_timeout max connection queue wait time 1s
initial_size number of connections created initially 16
max_size limit for total connections number 128
idle_limit limit for idle connections number 64
connecting_limit limit for establishing connections number 8
local_threshold latency window for instance selection mongodb default
max_replication_lag replication lag limit for usable secondaries, min. 90s -
maintenance_period pool maintenance period (idle connections pruning etc.) 15s
stats_verbosity changes the granularity of reported metrics 'terse'
dns_resolver server hostname resolver type (getaddrinfo or async) 'async'

stats_verbosity accepts one of the following values:

Value Description
terse Default value, report only cumulative stats and read/write totals
full Separate metrics for each operation, divided by read preference or write concern

It is a common practice to provide a database connection string via environment variables. To retrieve a value from the environment use dbconnection#env: THE_ENV_VARIABLE_WITH_CONNECTION_STRING as described in yaml_config::YamlConfig.

Secdist format

If a dbalias option is provided, for example dbalias: some_name_of_your_database, then the Secdist entry for that alias should look like following:

"mongo_settings": {
"some_name_of_your_database": {
"dbsettings": {
"uri": "mongodb://user:password@host:port/database_name"

Definition at line 99 of file component.hpp.

+ Inheritance diagram for components::Mongo:
+ Collaboration diagram for components::Mongo:

Public Member Functions

 Mongo (const ComponentConfig &, const ComponentContext &)
 Component constructor.
 ~Mongo () override
 Component destructor.
storages::mongo::PoolPtr GetPool () const
 Client pool accessor.
- Public Member Functions inherited from components::ComponentBase
 ComponentBase (const ComponentConfig &, const ComponentContext &)
 ComponentBase (ComponentBase &&)=delete
 ComponentBase (const ComponentBase &)=delete
 ~ComponentBase () override=default
ComponentHealth GetComponentHealth () const override
void OnLoadingCancelled () override
void OnAllComponentsLoaded () override
void OnAllComponentsAreStopping () override
- Public Member Functions inherited from components::RawComponentBase
 RawComponentBase (RawComponentBase &&)=delete
 RawComponentBase (const RawComponentBase &)=delete

Static Public Member Functions

static yaml_config::Schema GetStaticConfigSchema ()
- Static Public Member Functions inherited from components::ComponentBase
static yaml_config::Schema GetStaticConfigSchema ()
- Static Public Member Functions inherited from components::RawComponentBase
static yaml_config::Schema GetStaticConfigSchema ()

Additional Inherited Members

- Protected Types inherited from components::ComponentBase
using LoggableComponentBase = ComponentBase
 Legacy alias, use ComponentBase instead.

The documentation for this class was generated from the following file: