How do I create a new database in MongoDB using PyMongo?

Question:

Can I create a new database simply by connecting to the MongoDB server, or is there another way to create it using Python? If so, how is this done?

Asked By: J.Olufsen

||

Answers:

MongoDB creates databases and collections automatically for you if they don’t exist already.

For using python library with MongoDB, check out this documentation.

Warning:
the example is based on Pymongo 2.1.
If you’re using Pymongo 3.4, check this doc.

from pymongo import Connection
connection = Connection()
db = connection['test-database']
collection = db['test-collection']

So here you can use any name for database and collection.

Answered By: DarthVader

This is Mongodb 3.4 Version:

from pymongo import MongoClient
client = MongoClient()
db = client.primer
coll = db.dataset

neither the database nor the collection are created until you attempt
to write a document.

Document: Python Driver (PyMongo)

Answered By: 宏杰李

Needed to create a collection without inserting the documents in order to be able to set validators first.

Luckily the pymongo Database object defines create_collection method:

create_collection(name, codec_options=None, read_preference=None, write_concern=None, read_concern=None, session=None, **kwargs)

Create a new Collection in this database.

Normally collection creation is automatic. This method should only be used to specify options on creation. CollectionInvalid will be raised if the collection already exists.

Changed in version 3.11: This method is now supported inside
multi-document transactions with MongoDB 4.4+.

Changed in version 3.6: Added session parameter.

Changed in version 3.4: Added the collation option.

Changed in version 3.0: Added the codec_options, read_preference, and
write_concern options.

Changed in version 2.2: Removed deprecated argument: options

Answered By: Ikar Pohorský

For pymongo==4.3.3:

from pymongo import MongoClient

client = MongoClient()
print(client.list_database_names())
db = client["new_db"]
collection = db["new_collection"]
print( db.list_collection_names())

the database and collection are only going to be created when attempt to write a document.

Answered By: Ashok
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.