Class: XGen::Mongo::Driver::Mongo
- Inherits:
-
Object
- Object
- XGen::Mongo::Driver::Mongo
- Defined in:
- lib/mongo/mongo.rb
Overview
Represents a Mongo database server.
Constant Summary collapse
- DEFAULT_PORT =
27017
Instance Method Summary collapse
-
#clone_database(from) ⇒ Object
Not implemented.
-
#copy_database(from_host, from_db, to_db) ⇒ Object
Not implemented.
-
#database_info ⇒ Object
Returns a hash containing database names as keys and disk space for each as values.
-
#database_names ⇒ Object
Returns an array of database names.
-
#db(db_name, options = {}) ⇒ Object
Return the XGen::Mongo::Driver::DB named
db_name
. -
#drop_database(name) ⇒ Object
Drops the database
name
. -
#initialize(pair_or_host = nil, port = nil, options = {}) ⇒ Mongo
constructor
Create a Mongo database server instance.
Constructor Details
#initialize(pair_or_host = nil, port = nil, options = {}) ⇒ Mongo
Create a Mongo database server instance. You specify either one or a pair of servers. If one, you also say if connecting to a slave is OK. In either case, the host default is “localhost” and port default is DEFAULT_PORT.
If you specify a pair, pair_or_host is a hash with two keys :left and :right. Each key maps to either
-
a server name, in which case port is DEFAULT_PORT
-
a port number, in which case server is “localhost”
-
an array containing a server name and a port number in that order
options
are passed on to each DB instance:
- :slave_ok
-
Only used if one host is specified. If false, when connecting to that host/port a DB object will check to see if the server is the master. If it is not, an error is thrown.
- :auto_reconnect
-
If a DB connection gets closed (for example, we have a server pair and saw the “not master” error, which closes the connection), then automatically try to reconnect to the master or to the single server we have been given. Defaults to
false
.
Since that’s so confusing, here are a few examples:
Mongo.new # localhost, DEFAULT_PORT, !slave
Mongo.new("localhost") # localhost, DEFAULT_PORT, !slave
Mongo.new("localhost", 3000) # localhost, 3000, slave not ok
# localhost, 3000, slave ok
Mongo.new("localhost", 3000, :slave_ok => true)
# localhost, DEFAULT_PORT, auto reconnect
Mongo.new(nil, nil, :auto_reconnect => true)
# A pair of servers. DB will always talk to the master. On socket
# error or "not master" error, we will auto-reconnect to the
# current master.
Mongo.new({:left => ["db1.example.com", 3000],
:right => "db2.example.com"}, # DEFAULT_PORT
nil, :auto_reconnect => true)
# Here, :right is localhost/DEFAULT_PORT. No auto-reconnect.
Mongo.new({:left => ["db1.example.com", 3000]})
When a DB object first connects to a pair, it will find the master instance and connect to that one.
75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/mongo/mongo.rb', line 75 def initialize(pair_or_host=nil, port=nil, ={}) @pair = case pair_or_host when String [[pair_or_host, port ? port.to_i : DEFAULT_PORT]] when Hash connections = [] connections << pair_val_to_connection(pair_or_host[:left]) connections << pair_val_to_connection(pair_or_host[:right]) connections when nil [['localhost', DEFAULT_PORT]] end @options = end |
Instance Method Details
#clone_database(from) ⇒ Object
Not implemented.
114 115 116 |
# File 'lib/mongo/mongo.rb', line 114 def clone_database(from) raise "not implemented" end |
#copy_database(from_host, from_db, to_db) ⇒ Object
Not implemented.
119 120 121 |
# File 'lib/mongo/mongo.rb', line 119 def copy_database(from_host, from_db, to_db) raise "not implemented" end |
#database_info ⇒ Object
Returns a hash containing database names as keys and disk space for each as values.
99 100 101 102 103 104 105 106 |
# File 'lib/mongo/mongo.rb', line 99 def database_info doc = single_db_command('admin', :listDatabases => 1) h = {} doc['databases'].each { |db| h[db['name']] = db['sizeOnDisk'].to_i } h end |
#database_names ⇒ Object
Returns an array of database names.
109 110 111 |
# File 'lib/mongo/mongo.rb', line 109 def database_names database_info.keys end |
#db(db_name, options = {}) ⇒ Object
Return the XGen::Mongo::Driver::DB named db_name
. The slave_ok and auto_reconnect options passed in via #new may be overridden here. See DB#new for other options you can pass in.
93 94 95 |
# File 'lib/mongo/mongo.rb', line 93 def db(db_name, ={}) XGen::Mongo::Driver::DB.new(db_name, @pair, @options.merge()) end |
#drop_database(name) ⇒ Object
Drops the database name
.
124 125 126 |
# File 'lib/mongo/mongo.rb', line 124 def drop_database(name) single_db_command(name, :dropDatabase => 1) end |