Python with MongoDB
The user can get started with MongoDB and their favorite programming language by leveraging one of its drivers, mostly maintained by MongoDB engineers and open-source community members. MongoDB provides a native Python driver, PyMongo, and a team of Driver engineers dedicated to developing the driver to meet the needs of the Python community, ensuring that MongoDB and Python function smoothly together.
The user can begin working with MongoDB right away by using a free MongoDB cluster provided by MongoDB Atlas. MongoDB Atlas is a database service that permits the user to specify the size of your database and receive a connection string.
Install Python Driver
Even though additional drivers built by the community exist, PyMongo is the official Python driver for MongoDB. The pip package management system is the simplest approach to installing the driver. Run the following commands from the command line:
python -m pip install pymongo
Note that if the user is utilizing the Atlas M0 (Free Tier) cluster, Python 2.7.9+ and Python 3.4 or newer are required. The “python —version” and “pip list” commands can be used to determine which version of Python and PyMongo is in use.
from pymongo import MongoClient # pprint library is used to make the output look more pretty from pprint import pprint # connect to MongoDB, change the << MONGODB URL >> to reflect your own connection string client = MongoClient(<<MONGODB URL>>) db=client.admin # Issue the serverStatus command and print the results serverStatusResult=db.command("serverStatus") pprint(serverStatusResult)
Replace the “<>” with the MongoDB connection string. Save it as “mongodbtest.py” and run it from the command line with “python mongodbtest.py.”
Example Output
{u'asserts': {u'msg': 0, u'regular': 0, u'rollovers': 0, u'user': 0, u'warning': 0}, u'connections': {u'available': 96, u'current': 4, u'totalCreated': 174L}, u'extra_info': {u'note': u'fields vary by platform', u'page_faults': 0}, u'host': u'cluster0-shard-00-00-6czvq.mongodb.net:27017', u'localTime': datetime.datetime(2017, 4, 4, 0, 18, 45, 616000), . .
The ‘u’ character in the python output indicates that the strings are saved in Unicode. This example also employs the pprint library, which is unrelated to MongoDB and is used solely to structure and visually please output from a console.
In this example, we’re connecting to our MongoDB instance and running “db.serverStatus()” (reference). This command returns data about the MongoDB instance and executes a command on MongoDB in this example.
The application is ready to use if it runs correctly!
Exploring Documents and Collections
MongoDB holds data in the form of documents. Documents are not like Microsoft Word or Adobe PDF files, but JSON files that adhere to the JSON specification.
Documents can have arrays and subdocuments in addition to key/value pairs. The data itself can be of several types, including geographic, decimal, and ISODate, to mention a few. MongoDB internally maintains a binary representation of JSON known as BSON. It enables MongoDB to support data types such as decimal that are not defined in the JSON specification.
In MongoDB, a collection is a document’s container. Collections are stored in databases. Relational databases are comparable to this class.
Relational concept | MongoDB equivalent |
Database | Database |
Tables | Collections |
Rows | Documents |
Index | Index |
Data can be stored in papers for a variety of reasons. While a more detailed discussion is outside the scope of this post, our basic Python scripts demonstrate some of the benefits, such as dynamic, adjustable schema and the ability to store arrays.
Unicode String
The data in MongoDB is stored in BSON format. Because BSON strings are encoded in UTF-8, PyMongo must ensure that any stored strings are valid UTF-8 data. Regular strings (type’str’>) are validated and saved in their original state. Unicode strings (of the type ‘Unicode>) are first encoded in UTF-8. Because PyMongo decodes each BSON string to a Python Unicode string rather than plain str, our sample string appears in the Python shell as u’Mike’ rather than ‘Mike.’
>>> post_id ObjectId(...) >>> pprint.pprint(posts.find_one({"_id": post_id})) {u'_id': ObjectId('...'), u'author': u'Mike', u'date': datetime.datetime(...), u'tags': [u'mongodb', u'python', u'pymongo'], u'text': u'My first blog post!'}
Other useful articles:
- OOP in Python
- Python v2 vs Python v3
- Variables, Data Types, and Syntaxes in Python
- Operators, Booleans, and Tuples
- Loops and Statements in Python
- Python Functions and Modules
- Regular Expressions in Python
- Python Interfaces
- JSON Data and Python
- Pip and its Uses in Python
- File Handling in Python
- Searching and Sorting Algorithms in Python
- System Programming (Pipes &Threads etc.)
- Database Programming in Python
- Debugging with Assertion in Python
- Sockets in Python
- InterOp in Python
- Exception Handling in Python
- Environments in Python
- Foundation of Data Science
- Reinforcement Learning
- Python for AI
- Applied Text Mining in Python
- Python Iterations using Libraries
- NumPy vs SciPy
- Python Array Indexing and Slicing
- PyGame
- PyTorch
- Python & Libraries
- Python with MySQL
- Python with MongoDB