Python MongoDB – create_index Query

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

filter_none

edit
close

play_arrow

link
brightness_4
code

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)

chevron_right


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

filter_none

edit
close

play_arrow

link
brightness_4
code

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)

chevron_right


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

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.