What's the easiest way to do this from my bash prompt?
21 Answers
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
Edit:
In Mongo 6.0 mongo
was removed and replaced with mongosh
which has to be installed separately. More info here: https://www.mongodb.com/docs/mongodb-shell/#mongodb-binary-bin.mongosh
The equivalent in mongosh
would be:
mongosh --eval "use <dbname>" --eval "db.dropDatabase()"
5 Comments
mongo <dbname> --eval "printjson(db.dropDatabase())"
mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
mongosh <dbname> --eval "printjson(db.dropDatabase())"
.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.
7 Comments
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 }
Comments
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.
15 Comments
.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
.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.
Comments
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()
Comments
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.
1 Comment
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.
Comments
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
}
Comments
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()
1 Comment
use following command from mongo shell to drop db
use <database name>;
db.dropDatabase();
1 Comment
> 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 :
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.
Comments
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
Comments
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")