I’m sort of new at MongoDB and running into a few problems with locating/accessing data that I’ve created or imported, in that it’s ending up in two distinct locations.
If I start the shell like this
$ mongo
and then show the databases
$ show dbs
this gives me a list of about 10 databases that I’ve created. These are in the /data/db directory It does not include a db called ‘pact’
However, if I connect like this
$ mongo localhost/pact
and then do
$show dbs
it only lists one db, the pact db, which isn’t listed when I connect to mongo the other way by just doing ‘mongo.’ ‘Pact’ isn’t in the /data/db directory. According to my notes, I might have made the ‘pact’ db by starting mongod this way,
mongod --dbpath data
which I would think would position it in the data/db directory, and I imported into the pact directory like this
mongoimport --stopOnError --db pact --collection products < products.json
Moving on, if I use mongo in irb and start like this
>> mongo_client = MongoClient.new("localhost", 27017)
and then do ‘show dbs’
I get the long list of dbs from the /data/db directory (which didn’t include pact).
In order to find db pact through irb, I tried to include it after localhost, as I do with mongo localhost/pact
>> mongo_client = MongoClient.new("localhost/pact", 27017)
but I got an error.
1 Is there a way I can find out what directory the ‘pact’ db is in?
2 How can I access it in irb with the Mongo driver if not by
mongo_client = MongoClient.new(“localhost/pact”, 27017)
which I assumed would work since I can do this in the shell mongo localhost/pact
3 Based on what I’ve told you, can you explain why this happened (I’m assuming it’s not the proper way to have data saved in another directory)
My suggestion is to use
mongodumpinmongo localhost/pactshell contextto backup the entire database. And use
mongorestoreat normallmongoshell contextto restore the database.