Restoring MongoDB dbs and collections from old /data/db - mongodb

I have had a MongoDB running that got accidentially uninstalled without any prior dump-export. I re-installed MongoDB and I still have the files in /data/db.
Is there a way to import the old files from the previous MongoDB installation?

You could run mongod on diffrent folders. In order to do that you should specify dbpath as the command line argument. So, at first run mongod by specifying the dbpath command line argument to point to the folder of your earlier installation. Then perform DBs exports. At this point you shuold shut down mongod and start again using defaults. After mongod is up and running import your DBs.

Related

Restoring MongoDB using only .wt files

My PC crashed. Can I use the .wt files to get my data back?
.wt files from the old MongoDB
You can restore your .wt WiredTiger files downloaded from your Atlas Backup (which unzips or untar as a restore folder) to your local MongoDB.
First, make a backup of your /data/db path. Call it /data_20200407/db. Second, copy paste all the .wt files from your Atlas Backup restore folder into your local /data/db path. Restart your Ubuntu or MongoDB server. Start your Mongo shell and you should have those restored files there.
Keep your wt files at location C:\data\db also check permissions
Go to bin folder of mongodb and hit following command
mongod --dbpath "C:\data\db"
Go to same bin folder and hit mongo command there
I suggest to use noSQLBooster to view db and collections.
make sure you have C:\Programfiles\mongodb\server\4.4\bin\ path set in Environment variables
I restored my db with some BSON files and then I repaired it so it can sync up my db and get my most recent files. I used Robo3T to repair my DB and it worked

Mongorestore writing to MongoDB datafiles

MongoDB documentation has the following line. What do they mean when they say, mongorestore can directly write to MongoDB data files without an active mongod? Does it mean it can write even if a mongod instance is not ready and reachable, or, is there something called inactive mongod instance. I am finding it difficult to understand. Can someone explain me this?
mongorestore can write data to either mongod or mongos instances, in addition to writing directly to MongoDB data files without an active mongod.
Prior to v3.x mongorestore could be configured to write directly to data files rather than writing into data files via mongod.
The term "data files" here refers to the contents of a dbpath directory so, by specifying --dbpath you could tell mongorestore to attach to the data files in that directory and insert data into those files without having to go through a mongod instance.

How to run a mongod instance

I am a starter of MongoDB. According to the "Import Example" section of MongoDB 3.2 Manual, the prerequisite for importing data into the database is to have a running mongod instance. With limited background knowledge of MongoDB, I failed to fully understand this line of instruction. Could anyone please give me some explanation on how to run a mongod instance step by step in Mac Terminal? Thanks.
Here are several steps to do start mongodb var mongod
created the ./bin/data/db directory storing mongodb data file.
Start one terminal for mongodb server
Go to mongo/bin, and execute this command
./mongod
Start another terminal for mongodb shell
Go to mongo/bin, and run
./mongo
Now we can connect to mongodb now, more command like show dbs, show collections, use dbname, For more commands in mongodb, refer to db.help()...

MongoDB data not stored in /data/db, although it is saving data... but where?

I'm completely new to MongoDB - I've installed all the programs and set it up so that I run mongod.exe and then mongo.exe. I created a new database called 'test' and inserted some data. However, I can't see any files being created in the /data/db directory. The data is definitely being stored somewhere, and when I closed down all the cmd boxes and started the processes again, the data I initially pushed onto the DB is still there.
I tried running the command 'db.adminCommand("getCmdLineOpts")' which apparently should show my DB Path, but it doesn't:
Can anyone offer some insight on this? Thanks :)
For using mongod.exe without parameters default is C:\data\db. Check start up parameters if you run server as service.
You can run this command to retrieve the dbpath if you in a Linux environment:
grep dbpath /etc/mongod.conf
db.adminCommand("getCmdLineOpts") is not running the db path as it was not specified a a command line parameter when the mongod process was started. It seems the db path is configured in the mongod.conf configuration file and the above command should return it.

Data storage in mongodb

first of all please forgive me for asking a silly question but I am new to mongodb and just installed it on my windows platform by following this installation guide :http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/
It says "MongoDB requires a data folder to store its files. The default location for the MongoDB data directory is C:\data\db.You can specify an alternate path for data files using the --dbpath option to mongod.exe."
So I created a folder d://data/db in my computer and issued a command
C:\mongodb\bin\mongod.exe --dbpath d:\mongodb\data
Then it says
"At the mongo.exe prompt, issue the following two commands to insert a record in the test collection of the default test database and then retrieve that record:
db.test.save( { a: 1 } )
db.test.find()"
I issued this to commands to save and retrieve the objects and its working fine but what is this default test database? where is it? Moreover where this object is stored? Where I can find this file?
what is this default test database?
When you connect to a mongod server without specifying a database, a default database "test" is selected. Since databases are created lazily, it may not even exist until you write to it.
db.test.save( { a: 1 } )
After this line is executed, database with current name ("test" by default) is created (if didn't exist already) and in it, collection "test" is created (if didn't exist already).
where is it? Moreover where this object is stored? Where I can find this file?
All databases are ultimately stored as files in your data dir. Look for "test.*" files there.
mongod.lock, is the file which provides the PID of your running mongod instance. When you start a mongod instance, MongoDB check if the lock is empty to start cleanly mongod. Then MongoDB registered the PID number of the running mongod instance in this lock file.
MongoDB delete the contains of this lock file when you shutdown cleanly your server,
mongod --shutdown -- dbpath <path name> --port <port number>