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

PythonMongodbPymongo

Python 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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJ.OlufsenView Question on Stackoverflow
Solution 1 - PythonDarthVaderView Answer on Stackoverflow
Solution 2 - Python宏杰李View Answer on Stackoverflow
Solution 3 - PythonIkar PohorskýView Answer on Stackoverflow