What's the easiest way to do this from my bash prompt?
Like this:
mongo <dbname> --eval "db.dropDatabase()"
More info on scripting the shell from the command line here: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting
The best way to do it is from the mongodb console:
> use mydb;
> db.dropDatabase();
Alternatively, you can stop mongod
and delete the data files from your data directory, then restart.
Hint: you can also move the data files to a subfolder, and delete them if you're sure you no longer need them.
use
command in .js file, you have to connect to concrete DB (specify dbname for mongo command)
~/.dbshell
file to clear your command history. (There may be a better way of doing that - I'm not sure.) I do this because, unlike with SQL, the mongo command to drop a database does not actually reference the name of the database to drop - it just drops the database to which the client is currently connected. Clearing your command history will prevent your from accidentally replaying the dropDatabase
command and unintentionally dropping a second database.
I found this easy to remember:
mongo //to start the mongodb shell
show dbs //to list existing databases
use <dbname> //the <dbname> is the database you'd like to drop
db //should show <dbname> just to be sure I'm working with the right database
db.dropDatabase() //will delete the database & return { "dropped" : "<dbname>", "ok" : 1 }
You don't need heredocs or eval, mongo
itself can act as an interpreter.
#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();
Make the file executable and run it.
.js
, otherwise it will be interpreted as the db address.
mongo filename
which is unnecessary - the file already has an interpreter in the top line. Just make the file executable and run it ./filename
./filename
will actually run /usr/bin/env mongo filename
, right? And so if filename
doesn't end in .py
, mongo will not recognise the argument as a script to run.
ps
.
ps
only shows you what's running at the time you invoke ps
, not the chain of exec
calls that lead to that point nor the work the kernel has done to load and execute the file. If you want to know what's really going on, you should use write a wrapper around /usr/bin/env
, set that as the executable in the shebang line, and then kick the whole thing off with strace
.
Start MongoDB
Command for Database drop is :
1. first select the database which you want to delete
use < database name >
2. Then use this..
db.dropDatabase()
You could also use a "heredoc":
mongo localhost/db <<EOF
db.dropDatabase()
EOF
Results in output like:
mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }
bye
I like to use heredocs for things like this, in case you want more complex sequence of commands.
Here are some use full delete operations for mongodb using mongo shell
To delete particular document in collections: db.mycollection.remove( {name:"stack"} )
To delete all documents in collections: db.mycollection.remove()
To delete collection : db.mycollection.drop()
to delete database : first go to that database by use mydb
command and then
db.dropDatabase()
directly from command prompt or blash : mongo mydb --eval "db.dropDatabase()
Other way:
echo "db.dropDatabase()" | mongo <database name>
Execute in a terminal:
mongo // To go to shell
show databases // To show all existing databases.
use <DATA_BASE> // To switch to the wanted database.
db.dropDatabase() // To remove the current database.
Open another terminal window and execute the following commands,
mongodb
use mydb
db.dropDatabase()
Output of that operation shall look like the following
MAC:FOLDER USER$ mongodb
> show databases
local 0.78125GB
mydb 0.23012GB
test 0.23012GB
> use mydb
switched to db mydb
>db.dropDatabase()
{ "dropped" : "mydb", "ok" : 1 }
>
Please note that mydb
is still in use, hence inserting any input at that time will initialize the database again.
Open a terminal and type:
mongo
The below command should show the listed databases:
show dbs
/* the <dbname> is the database you'd like to drop */
use <dbname>
/* the below command will delete the database */
db.dropDatabase()
The below should be the output in the terminal:
{
"dropped": "<dbname>",
"ok": 1
}
Using Javascript, you can easily create a drop_bad.js script to drop your database:
create drop_bad.js:
use bad;
db.dropDatabase();
Than run 1 command in terminal to exectue the script using mongo shell:
mongo < drop_bad.js
Eventhough there are several methods, The best way (most efficient and easiest) is using db.dropDatabase()
In you command prompt, First connect to mongodb using following command:
mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]
you will be accessing db with <dbname>
.
Run the following command to drop the whole database:
db.dropDatabase()
one liner remote remove all collections from mongo database
note must use --host, (-h is help for mongo command), and -d is not an option, select the db and command after password.
mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"
Surprised that we haven't seen this variation come up. This minimizes extra args on the command line and explicitly shows the DB being switched to FOO
and then dropped:
$ mongo --host "mongodb://machine:port" --eval 'db.getSiblingDB("FOO").dropDatabase();'
LogIn into your mongoDB command line: And type the below commands. use "YOUR_DATABASE_NAME"; db.dropDatabase();
Drop a MongoDB database using python:
import argparse
import pymongo
if __name__ == "__main__":
"""
Drop a Database.
"""
parser = argparse.ArgumentParser()
parser.add_argument("--host", default='mongodb://localhost:27017',
help="mongodb URI [default: %(default)s]")
parser.add_argument("--database", default=None,
help="database name: %(default)s]")
args = parser.parse_args()
client = pymongo.MongoClient(host=args.host)
if args.database in client.list_database_names():
client.drop_database(args.database)
print(f"Dropped: '{args.database}'")
else:
print(f"Database '{args.database}' does not exist")
In order to be really sure that you drop the correct database use
mongo <connection properties> --eval "db.getSiblingDB('dbname').dropDatabase()"
See Authentication failure while trying to save to mongodb to understand the concerns.
You can first switch to your database which you want to delete. Then you can delete the same by using the command dropDatabase().
Code :
>use dbName
>db.dropdataBase()
The result will be :
{ "dropped" : "dbName", "ok" : 1 }
If you want to delete a specific collection in a database, then switch to the database and enter the following command.
Code:
>use dbName
db.collection.drop()
The result will be :
true
If you want a better understanding of MongoDB shell commands it's better to follow the documentation always. Link to the documentation : https://www.mongodb.com/docs/manual/reference/method/#std-label-js-administrative-methods
db will show the current Database name type: db.dropDatabase();
1- select the database to drop by using 'use' keyword.
2- then type db.dropDatabase();
use following command from mongo shell to drop db
use <database name>;
db.dropDatabase();
> use auth-users ; db.dropDatabase()
and > use auth-users; db.dropDatabase()
and both returned [thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :
Success story sharing
mongo <dbname> --eval "printjson(db.dropDatabase())"
mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'