In this MongoDB tutorial, we will discuss and learn more about “How to store images in MongoDB database“. We will also learn how different ways we can store the image and easily retrieve the images from the MongoDB database. These are the following topic that we are going to cover in this tutorial
- How to store images in MongoDB?
- Storing images in MongoDB using python
How to store images in MongoDB?
We can store the images in the MongoDB database by creating a schema with mongoose. We define the schema by creating a file “model.js“.
To store the images in the database form of arrays, there is the data type that is Buffer which is used to store the image.
There are three approaches for working with images:
- GridFS: Using GridFS API we can store the large images. The API will help you store the large file into small chunks (255KiB) and store it into separate documents in an “fs.chunks“ collection.
- Inline: In this smaller images(16MB) can be stored into MongoDB documents using binary data.
- Reference: In this, only image references are stored in the database and we can also save images into API or file system.
Storing the binary files in a database is convenient for distributing across multiple locations because large files are hard to access to end-users.
Note that, Before storing images in the database you need to make sure what is the benefit behind it.
Also Read: MongoDB group by count
Storing images in MongoDB using python
In this topic, we will learn to store images in MongoDB via python.
We will use two libraries for this:
GridFS: It is used for storing and retrieving giant files like images, audios, videos, etc. In this, we have a tendency to store information in MongoDB collection. It’s the potential to store files even bigger than the scale limit of 16MB.
PyMongo: The PyMongo library is used to interacting with the MongoDB database from python. We perform various functionality operations like retrieve results, write and delete data, run the database.
Remember that, If you don’t have the pymongo library in your system then install it by using the below command:
pip3 install pymongo
After installing the library now you can use it. First of all, import the library then connect to the server so you can use MongoDB in python, and for storing the images create a database.
from pymongo import MongoClient connection = MongoClient("localhost", 27017) database = connection['DB_NAME']
MongoDB by default runs on port 27017. DB_NAME here you can use any name for the database.
In the next step, we will use the gridfs library for storing the images into the MongoDB database.
import gridfs #Create a object of GridFs for the above database. fs = gridfs.GridFS(database) #define an image object with the location. file = "C:/Users/user/Pictures/dog.jpeg" #Open the image in read-only format. with open(file, 'rb') as f: contents = f.read() #Now store/put the image via GridFs object. fs.put(contents, filename="file")
After executing the above code you can see the output:
- In the right-side of the output, you can see database Images is created succcessfully.
- In the database there two sub-folders named as fs.chunks and fs.files.
- Our image stored in fs.files folder with ObjectID((‘612727d8e71b2de49ac00734’) where you can see all the detail related to the image like _id, filename, md5, chunkSize, length and uploadDate.
You may also like reading the following articles.
- Import JSON and insert JSON into MongoDB
- How to check if MongoDB is installed
- MongoDB sort by date
- MongoDB find multiple conditions
- Import CSV into MongoDB
- Create tables in MongoDB
- How does MongoDB create collection
- MongoDB drop collection
- MongoDB failed to connect
- MongoDB join two collections
In this tutorial, we have learned “How to store images in MongoDB database” using different ways with examples. These are the following topics that we covered in this tutorial
- Can we store image in MongoDB?
- Storing images in MongoDB using python
After working for more than 15 years in the Software field, especially in Microsoft technologies, I have decided to share my expert knowledge of SQL Server. Check out all the SQL Server and related database tutorials I have shared here. Most of the readers are from countries like the United States of America, the United Kingdom, New Zealand, Australia, Canada, etc. I am also a Microsoft MVP. Check out more here.