Mongoid::Shell
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.
ruby
namespace :db
namespace :production
task :shell
Mongoid.load! File.join(Rails.root, "config/mongoid.yml"), :production
system Mongoid::Shell::Commands::Mongo.new.to_s
end
end
end
Commands can be created for the current default session or you can pass a session as an argument to a new command.
ruby
Mongoid::Shell::Commands::Mongodump.new # will use Mongoid.default_session
Mongoid::Shell::Commands::Mongodump.new(session: Moped::Session.new([ "127.0.0.1:27017" ]))
Commands accept parameters.
ruby
out = File.join(Dir.tmpdir, 'db_backup')
mongodump = Mongoid::Shell::Commands::Mongodump.new(db: 'another_database', out: out)
system mongodump.to_s # mongodump --db another_database --out /tmp/db_backup
To specify parameters multiple times, set them to arrays.
ruby
mongodump = Mongoid::Shell::Commands::Mongodump.new(collection: %w(users products))
system mongodump.to_s # mongodump --collection users --collection products
Compatibility
This gem supports Mongoid 3, 4 and 5.
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.
ruby
Mongoid::Shell::Commands::Mongo.new.to_s
Supports --username
, --password
, --eval
, --nodb
, --norc
, --quiet
and --ipv6
.
Mongodump
Mongodump is a utility for creating a binary export of the contents of a database.
ruby
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
and --ipv6
.
Mongorestore
The mongorestore tool imports content from binary database dump, created by mongodump into a specific database.
ruby
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
and --noIndexRestore
.
Mongoexport
The mongoexport tool produces a JSON or CSV export of data stored in a MongoDB instance.
ruby
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.
ruby
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
and --all
.
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-2015 Daniel Doubrovkine, Artsy Inc.