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
Is it possible to use MongoDB to query for entries that have a particular value in a field in an object in an array?
Yes, to query for a field in an object in the array with MongoDB, use $elemMatch operator. This operator allows you to match documents where at least one array element satisfies all specified query criteria.
Syntax
db.collectionName.find({
"arrayFieldName": {
$elemMatch: {
"fieldName": "value"
}
}
});
Sample Data
Let us create a collection with sample documents ?
db.objectInAnArrayDemo.insertMany([
{
"StudentDetails": [
{"StudentName": "John", "StudentMessage": "Hi"},
{"StudentName": "Larry", "StudentMessage": "Hello"}
]
},
{
"StudentDetails": [
{"StudentName": "Carol", "StudentMessage": "Hello"},
{"StudentName": "David", "StudentMessage": "Good Morning"}
]
}
]);
{
"acknowledged": true,
"insertedIds": [
ObjectId("5c92635d36de59bd9de06381"),
ObjectId("5c92637936de59bd9de06382")
]
}
Display All Documents
db.objectInAnArrayDemo.find().pretty();
{
"_id": ObjectId("5c92635d36de59bd9de06381"),
"StudentDetails": [
{
"StudentName": "John",
"StudentMessage": "Hi"
},
{
"StudentName": "Larry",
"StudentMessage": "Hello"
}
]
}
{
"_id": ObjectId("5c92637936de59bd9de06382"),
"StudentDetails": [
{
"StudentName": "Carol",
"StudentMessage": "Hello"
},
{
"StudentName": "David",
"StudentMessage": "Good Morning"
}
]
}
Query for Field in Array Object
Find documents where any student has the message "Good Morning" ?
db.objectInAnArrayDemo.find({
"StudentDetails": {
$elemMatch: {
"StudentMessage": "Good Morning"
}
}
});
{
"_id": ObjectId("5c92637936de59bd9de06382"),
"StudentDetails": [
{
"StudentName": "Carol",
"StudentMessage": "Hello"
},
{
"StudentName": "David",
"StudentMessage": "Good Morning"
}
]
}
Conclusion
The $elemMatch operator is essential for querying nested objects within arrays. It matches documents where at least one array element satisfies the specified criteria, making it perfect for complex array queries.
Advertisements
