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
MongoDB find() to operate on recursive search?
Use dot notation with find() to perform recursive search within nested arrays and embedded documents. This allows querying deep fields without complex operators.
Syntax
db.collection.find({"arrayName.fieldName": value});
db.collection.find({"nestedDocument.field": value});
Sample Data
db.findOperationDemo.insertMany([
{
"ClientDetails": [
{"ClientId": 101, "ClientName": "Chris"},
{"ClientId": 102, "ClientName": "Robert"}
]
},
{
"ClientDetails": [
{"ClientId": 110, "ClientName": "David"},
{"ClientId": 112, "ClientName": "Mike"}
]
}
]);
{
"acknowledged": true,
"insertedIds": [
ObjectId("5cd9a118b50a6c6dd317ad99"),
ObjectId("5cd9a12fb50a6c6dd317ad9a")
]
}
Display All Documents
db.findOperationDemo.find().pretty();
{
"_id": ObjectId("5cd9a118b50a6c6dd317ad99"),
"ClientDetails": [
{
"ClientId": 101,
"ClientName": "Chris"
},
{
"ClientId": 102,
"ClientName": "Robert"
}
]
}
{
"_id": ObjectId("5cd9a12fb50a6c6dd317ad9a"),
"ClientDetails": [
{
"ClientId": 110,
"ClientName": "David"
},
{
"ClientId": 112,
"ClientName": "Mike"
}
]
}
Recursive Search Using Dot Notation
Search for documents containing a specific ClientId within the nested array ?
db.findOperationDemo.find({"ClientDetails.ClientId": 110});
{
"_id": ObjectId("5cd9a12fb50a6c6dd317ad9a"),
"ClientDetails": [
{"ClientId": 110, "ClientName": "David"},
{"ClientId": 112, "ClientName": "Mike"}
]
}
Search by Client Name
db.findOperationDemo.find({"ClientDetails.ClientName": "Chris"});
{
"_id": ObjectId("5cd9a118b50a6c6dd317ad99"),
"ClientDetails": [
{"ClientId": 101, "ClientName": "Chris"},
{"ClientId": 102, "ClientName": "Robert"}
]
}
Conclusion
Dot notation enables efficient recursive searching in MongoDB by directly accessing nested fields within arrays and embedded documents. Use "arrayName.fieldName" pattern to query deep structures without complex aggregation pipelines.
Advertisements
