Skip to content

Repository files navigation

Mongoid::Shell

Gem VersionTestRubocop

Create mongo command-lines from Mongoid configuration.

For example, connect to your production database without having to remember the entire command line using a db:production:shell Rake task.

namespace:dbnamespace:productiontask:shellMongoid.load!File.join(Rails.root,"config/mongoid.yml"),:productionsystemMongoid::Shell::Commands::Mongo.new.to_sendendend

Commands can be created for the current default session or you can pass a session as an argument to a new command.

Mongoid::Shell::Commands::Mongodump.new# will use Mongoid.default_sessionMongoid::Shell::Commands::Mongodump.new(session: Moped::Session.new(["127.0.0.1:27017"]))

Commands accept parameters.

out=File.join(Dir.tmpdir,'db_backup')mongodump=Mongoid::Shell::Commands::Mongodump.new(db: 'another_database',out: out)systemmongodump.to_s# mongodump --db another_database --out /tmp/db_backup

To specify parameters multiple times, set them to arrays.

mongodump=Mongoid::Shell::Commands::Mongodump.new(excludeCollection: %w(usersproducts))systemmongodump.to_s# mongodump --excludeCollection users --excludeCollection products

To use output in logs, pass the mask_sensitive option to to_s.

> Mongoid::Shell::Commands::Mongo.new.to_s(mask_sensitive: true)=>"mongo 59.1.22.1:27017/mongoid --username user --password ********"
> Mongoid::Shell::Commands::Mongo.new.to_s(mask_sensitive: '(masked)')=>"mongo 59.1.22.1:27017/mongoid --username user --password (masked)"

Compatibility

This gem supports Mongoid 3, 4, 5, 6, 7, 8 and 9.

Supported Commands

Mongo

The mongo shell is an interactive JavaScript shell for MongoDB. The Mongoid::Shell::Commands::Mongo class generates a command line to connect to MongoDB. A particularly useful feature is that it will always yield the address of the master node of a MongoDB replica set.

Mongoid::Shell::Commands::Mongo.new.to_s

Supports --username, --password, --eval, --nodb, --norc, --quiet, --ipv6, --ssl and --authenticationDatabase.

Mongodump

Mongodump is a utility for creating a binary export of the contents of a database.

mongodump=Mongoid::Shell::Commands::Mongodump.new(collection: 'test')mongodump.to_s# mongodump --db test --collection test

The Mongoid::Shell::Commands::Mongodump class supports --db, --host, --username, --password, --query, --out, --collection, --excludeCollection, --excludeCollectionsWithPrefix, --directoryperdb, --journal, --oplog, --repair, --forceTableScan, --dbpath, --ipv6, --ssl and --authenticationDatabase

Mongorestore

The mongorestore tool imports content from binary database dump, created by mongodump into a specific database.

mongorestore=Mongoid::Shell::Commands::Mongorestore.new(collection: 'test',restore: '/tmp/db_backup')mongorestore.to_s# mongorestore --db test --collection test /tmp/db_backup

The Mongoid::Shell::Commands::Mongorestore class supports --db, --host, --username, --password, --collection, --ipv6, --dbpath, --directoryperdb, --journal, --objcheck, --filter, --drop, --oplogReplay, --keepIndexVersion, --noIndexRestore, --ssl and --authenticationDatabase

Mongoexport

The mongoexport tool produces a JSON or CSV export of data stored in a MongoDB instance.

mongoexport=Mongoid::Shell::Commands::Mongoexport.new(collection: 'traffic',out: 'traffic.json')mongoexport.to_s# mongoexport --db test --collection traffic --out traffic.json

The Mongoid::Shell::Commands::Mongoexport class supports --verbose, --quiet, --version, --port, --ipv6, --ssl, --sslCAFile, --sslPEMKeyFile, --sslPEMKeyPassword, --sslCRLFile, --sslAllowInvalidCertificates, --sslAllowInvalidHostnames, --sslFIPSMode, --authenticationDatabase, --authenticationMechanism, --gssapiServiceName, --gssapiHostName, --collection, --fields, --fieldFile, --query, --csv, --type, --out, --jsonArray, --pretty, --slaveOk, --forceTableScan, --skip, --limit, --sort, --directoryperdb, --journal, --dbpath.

Mongoimport

The mongoimport tool imports content from an Extended JSON, CSV, or TSV export created by mongoexport, or potentially, another third-party export tool.

mongoimport=Mongoid::Shell::Commands::Mongoimport.new(collection: 'contacts',file: 'contacts.json')mongoimport.to_s# mongoimport --db test --collection contacts --file contacts.json

The Mongoid::Shell::Commands::Mongoimport class supports --verbose, --quiet, --version, --host, --username, --password, --port, --ipv6, --ssl, --sslCAFile, --sslPEMKeyFile, --sslPEMKeyPassword, --sslCRLFile, --sslAllowInvalidCertificates, --sslAllowInvalidHostnames, --sslFIPSMode, --authenticationDatabase, --authenticationMechanism, --gssapiServiceName, --gssapiHostName, --db, --collection, --fields, --directoryperdb, --journal, --dbpath, --fieldFile, --ignoreBlanks, --type, --file, --drop, --headerline, --upsert, --upsertFields, --stopOnError, --jsonArray, --maintainInsertionOrder, --numInsertionWorkers, --writeConcern.

Mongostat

The mongostat utility provides a quick overview of the status of a currently running mongod or mongos instance.

The Mongoid::Shell::Commands::Mongostat class supports --host, --username, --password, --rowcount, --discover, --noheaders, --http, --all, --ssl and --authenticationDatabase.

Contributing

Fork the project. Make your feature addition or bug fix with tests. Send a pull request. Bonus points for topic branches.

Copyright and License

MIT License, see LICENSE for details.

(c) 2013-2026 Daniel Doubrovkine, Artsy Inc.

About

Derive shell commands from Mongoid sessions and configuration options.

Resources

Stars

14 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages