The
$elemMatch operator matches documents in a collection that contain an array
field with at least one element that matches all the specified query criteria.
Syntax
{
<field>: { $elemMatch: { <query1>, <query2>, ... } } }
Let’s experiment with employee collection.
> db.employee.find().pretty() { "_id" : ObjectId("60bcd0dd8251689f64fb3eee"), "id" : 1, "firstName" : "Joel", "lastName" : "chelli" } { "_id" : ObjectId("60bcd0dd8251689f64fb3eef"), "id" : 2, "firstName" : "Ananad", "lastName" : "Bandaru" } { "_id" : ObjectId("60bcd0dd8251689f64fb3ef0"), "id" : 3, "firstName" : "Gopi", "lastName" : "Battu", "projects" : [ { "projectId" : "ind_cpcs", "name" : "cpcs", "description" : "cabin pressure control system" }, { "projectId" : "ind_veh_tracker", "name" : "vehicle tracker", "description" : "Track the vehicle" } ] } { "_id" : ObjectId("60bcd0dd8251689f64fb3ef1"), "id" : 4, "firstName" : "Ritwik", "lastName" : "Mohenthy", "hobbies" : [ "cooking", "trekking", "listening to music" ] } { "_id" : ObjectId("60bcf6218251689f64fb3ef2"), "id" : 5, "firstName" : "Sailja", "lastName" : "PTR", "projects" : [ { "projectId" : "ind_cpcs", "name" : "cpcs", "description" : "cabin pressure control system" } ], "hobbies" : [ "trekking", "singing" ] }
Get all the employees whose project name is cpcs.
> db.employee.find({"projects" : {$elemMatch : {"name" : {$eq : "cpcs"}}}}).pretty()
{
"_id" : ObjectId("60bcd0dd8251689f64fb3ef0"),
"id" : 3,
"firstName" : "Gopi",
"lastName" : "Battu",
"projects" : [
{
"projectId" : "ind_cpcs",
"name" : "cpcs",
"description" : "cabin pressure control system"
},
{
"projectId" : "ind_veh_tracker",
"name" : "vehicle tracker",
"description" : "Track the vehicle"
}
]
}
{
"_id" : ObjectId("60bcf6218251689f64fb3ef2"),
"id" : 5,
"firstName" : "Sailja",
"lastName" : "PTR",
"projects" : [
{
"projectId" : "ind_cpcs",
"name" : "cpcs",
"description" : "cabin pressure control system"
}
],
"hobbies" : [
"trekking",
"singing"
]
}
You can get the same result with following query also.
db.employee.find({"projects.name" : "cpcs" }).pretty()
> db.employee.find({"projects.name" : "cpcs" }).pretty() { "_id" : ObjectId("60bcd0dd8251689f64fb3ef0"), "id" : 3, "firstName" : "Gopi", "lastName" : "Battu", "projects" : [ { "projectId" : "ind_cpcs", "name" : "cpcs", "description" : "cabin pressure control system" }, { "projectId" : "ind_veh_tracker", "name" : "vehicle tracker", "description" : "Track the vehicle" } ] } { "_id" : ObjectId("60bcf6218251689f64fb3ef2"), "id" : 5, "firstName" : "Sailja", "lastName" : "PTR", "projects" : [ { "projectId" : "ind_cpcs", "name" : "cpcs", "description" : "cabin pressure control system" } ], "hobbies" : [ "trekking", "singing" ] }
No comments:
Post a Comment