Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Python MongoDB – create_index Query

  • Last Updated : 01 Jun, 2020

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 document. 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 
    
      
# creation of MongoClient 
client = MongoClient() 
    
# Connect with the portnumber and host 
client = MongoClient("mongodb://localhost:27017/"
    
# Access database 
mydatabase = client['GFG'
    
# Access collection of the database 
mycollection = mydatabase['College'
  
# Before Creating index
index_list = sorted(list(mycollection.index_information()))
print("Before Creating index")
print(index_list)
  
# Creating index
mycollection.create_index("student_id", unique = True)
  
# After Creating index
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']
  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.
  2. Using index_information() method, we get all the indexes in the collection,

Example 2:

Python3




from pymongo import MongoClient 
    
      
# creation of MongoClient 
client = MongoClient() 
    
# Connect with the portnumber and host 
client = MongoClient("mongodb://localhost:27017/"
    
# Access database 
mydatabase = client['GFG'
    
# Access collection of the database 
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.


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!