Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
Creating an index on a nested MongoDB field?
To create an index on a nested MongoDB field, use dot notation to specify the path to the nested field within the createIndex() method. This improves query performance when searching or sorting by nested field values.
Syntax
db.collection.createIndex({ "parentField.nestedField.deepField": 1 })
Where 1 indicates ascending order and -1 indicates descending order.
Sample Data
Let us create a collection with nested documents ?
db.createIndexOnNestedFieldDemo.insertMany([
{
"UserDetails": {
"UserPersonalDetails": {
"UserFirstName": "John",
"UserLastName": "Smith"
}
}
},
{
"UserDetails": {
"UserPersonalDetails": {
"UserFirstName": "Chris",
"UserLastName": "Brown"
}
}
},
{
"UserDetails": {
"UserPersonalDetails": {
"UserFirstName": "David",
"UserLastName": "Miller"
}
}
}
])
{
"acknowledged": true,
"insertedIds": [
ObjectId("5ce929c778f00858fb12e916"),
ObjectId("5ce929d678f00858fb12e917"),
ObjectId("5ce929e378f00858fb12e918")
]
}
View Sample Data
db.createIndexOnNestedFieldDemo.find().pretty()
{
"_id": ObjectId("5ce929c778f00858fb12e916"),
"UserDetails": {
"UserPersonalDetails": {
"UserFirstName": "John",
"UserLastName": "Smith"
}
}
}
{
"_id": ObjectId("5ce929d678f00858fb12e917"),
"UserDetails": {
"UserPersonalDetails": {
"UserFirstName": "Chris",
"UserLastName": "Brown"
}
}
}
{
"_id": ObjectId("5ce929e378f00858fb12e918"),
"UserDetails": {
"UserPersonalDetails": {
"UserFirstName": "David",
"UserLastName": "Miller"
}
}
}
Create Index on Nested Field
Create an ascending index on the nested UserLastName field ?
db.createIndexOnNestedFieldDemo.createIndex({
"UserDetails.UserPersonalDetails.UserLastName": 1
})
{
"createdCollectionAutomatically": false,
"numIndexesBefore": 1,
"numIndexesAfter": 2,
"ok": 1
}
Verify Index Performance
Test the index by querying the nested field ?
db.createIndexOnNestedFieldDemo.find({
"UserDetails.UserPersonalDetails.UserLastName": "Brown"
})
{
"_id": ObjectId("5ce929d678f00858fb12e917"),
"UserDetails": {
"UserPersonalDetails": {
"UserFirstName": "Chris",
"UserLastName": "Brown"
}
}
}
Conclusion
Use dot notation to create indexes on nested fields in MongoDB. This significantly improves query performance when filtering or sorting by deeply nested field values, making your database operations more efficient.
Advertisements
