MongoDB is an open-source document-oriented database. MongoDB stores data in the form of key-value pairs and is a NoSQL database program. The term NoSQL means non-relational.
Indexing
Indexing helps in querying the documents efficiently. It stores the value of a specific field or set of fields which are ordered by the value of the field as specified in the index.
PyMongo contains a function create_index() to explicitly create index. By default, _id is the only index present in the collection. This function can accept either a key or a list of (key, direction) pairs.
Syntax:
create_index(keys, session=None, **kwargs)
Let’s look at some examples.
Example 1:
Sample Database:

Python3
from pymongo import MongoClient
client = MongoClient()
mydatabase = client[ 'GFG' ]
mycollection = mydatabase[ 'College' ]
index_list = sorted ( list (mycollection.index_information()))
print ( "Before Creating index" )
print (index_list)
mycollection.create_index( "student_id" , unique = True )
index_list = sorted ( list (mycollection.index_information()))
print ( "\nAfter Creating index" )
print (index_list)
|
Output:
Before Creating index
['_id_']
After Creating index
['_id_', 'student_id_1']
- Here, we create an index named student_id using create_index() method. This results in two indexes in the documents _id and student_id.
- Using index_information() method, we get all the indexes in the collection,
Example 2:
Python3
from pymongo import MongoClient
client = MongoClient()
mydatabase = client[ 'GFG' ]
mycollection = mydatabase[ 'College' ]
record = { '_id' : 4 ,
"student_id" : 873 ,
"name" : "John" ,
"section" : "A" }
mycollection.insert_one(record)
|
Output:
DuplicateKeyError Traceback (most recent call last) <ipython-input-62-264f0e13db93> in <module> 16 record = {‘_id’: 4, “student_id”: 873, “name”: “John”, “section”: “A”} 17 —> 18 mycollection.insert_one(record)
DuplicateKeyError: E11000 duplicate key error collection: GFG.College index: student_id_1 dup key: { : 873 }
It raises the DuplicateKeyError as there is already a document that exists with the student_id 873 and we are trying to insert another document with the same student_id. This error occurs because we created an index on the field student_id and marked it as unique.