Mongo::Client
Inherits Mongo::WithReadPreference / Mongo::WithWriteConcern / Mongo::WithReadConcern / Reference / Object
The client which provides access to a MongoDB server, replica set, or sharded cluster.
It maintains management of underlying sockets and routing to individual nodes.
Constants
The maximum wire protocol version supported by this driver.
The mininum wire protocol version supported by this driver.
Constructors
Create a mongodb client instance from a mongodb URL.
require "cryomongo"
client = Mongo::Client.new "mongodb://127.0.0.1/?appname=client-example"
Instance methods
Get a newly allocated Mongo::Databaseusing the default auth database string
optionally provided as a part of the connection string uri.
see: https://docs.mongodb.com/manual/reference/connection-string/
Execute a command on the server.
# First argument is the `Mongo::Commands`.
client.command(Mongo::Commands::DropDatabase, database: "database_name")
Execute a command on the server.
# First argument is the `Mongo::Commands`.
client.command(Mongo::Commands::DropDatabase, database: "database_name")
Get a newly allocated Mongo::Database for the database named name.
The default auth database is optionally provided as a part of the connection string uri.
see: https://docs.mongodb.com/manual/reference/connection-string/
Get a newly allocated Mongo::Databaseusing the default auth database string
optionally provided as a part of the connection string uri.
see: https://docs.mongodb.com/manual/reference/connection-string/
Provides a list of all existing databases along with basic statistics about them.
NOTE: for more details, please check the official MongoDB documentation.
Read concern accessor.
Read concern accessor.
ReadPreference accessor.
ReadPreference accessor.
Starts a new logical session for a sequence of operations.
client = Mongo::Client.new
# First, create a ClientSession which is by default causally consistent.
session = client.start_session
collection = client["db"]["coll"]
# On a side note, it is important to ensure that both read and writes are performed with "majority" concern.
collection.read_concern = Mongo::ReadConcern.new(level: "majority")
collection.write_concern = Mongo::WriteConcern.new(w: "majority")
# Then pass session as the *session* named argument…
collection.insert_one({a: 1}, session: session)
collection.find_one({a: 1}, session: session)
# …and always end the session after using it.
session.end
Returns a document that provides an overview of the database’s state.
NOTE: for more details, please check the official MongoDB documentation.
Subscribe to monitoring command events.
client = Mongo::Client.new
client.subscribe_commands { |event|
case event
when Mongo::Monitoring::Commands::CommandStartedEvent
Log.info { "COMMAND.#{event.command_name} #{event.address} STARTED: #{event.command.to_json}" }
when Mongo::Monitoring::Commands::CommandSucceededEvent
Log.info { "COMMAND.#{event.command_name} #{event.address} COMPLETED: #{event.reply.to_json} (#{event.duration}s)" }
when Mongo::Monitoring::Commands::CommandFailedEvent
Log.info { "COMMAND.#{event.command_name} #{event.address} FAILED: #{event.failure.inspect} (#{event.duration}s)" }
end
}
An administrative command that returns usage statistics for each collection.
NOTE: for more details, please check the official MongoDB documentation.
Ends the subscription for command events.
client = Mongo::Client.new
subscription = client.subscribe_commands { |event|
puts event
}
client.unsubscribe_commands(subscription)
Allows a client to observe all changes in a cluster.
Returns a change stream on all collections in all databases in a cluster.
NOTE: Excludes system collections.
Write concern accessor.
Write concern accessor.