How do I create a new database in MongoDB using PyMongo?
PythonMongodbPymongoPython Problem Overview
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?
Python Solutions
Solution 1 - Python
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.
Solution 2 - Python
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)
Solution 3 - Python
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