MongoDB query with elemMatch for nested array data matching from inside objects.
Here we have three project objects and each contains an array of exams with multiple objects.
Here when "project_id" : ObjectId("5b6959e3dc68d21c6613c82d")
, The "exams"
array contain two times "writer.user_id":ObjectId("5b6959e3dc68d21c6613c77d")
how could i get these two data filtered from the first project object ?
db.exams.insert([{
"project_id" : ObjectId("5b6959e3dc68d21c6613c82d"),
"exams" : [
{
"allotment_type" : "manual",
"exam_id" : 1,
"topic" : "something",
"word_count" : 5,
"key_word_density" : 2,
"writer" : {
"user_id" : ObjectId("5b6959e3dc68d21c6613c77d"),
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"editor" : {
"user_id" : 1,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"manager" : {
"user_id" : 1,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
}
},
{
"allotment_type" : "manual",
"exam_id" : 2,
"topic" : "something",
"word_count" : 5,
"key_word_density" : 2,
"writer" : {
"user_id" : ObjectId("5b6959e3dc68d21c6613c77e"),
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"editor" : {
"user_id" : 2,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"manager" : {
"user_id" : 2,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
}
},
{
"allotment_type" : "manual",
"exam_id" : 3,
"topic" : "something",
"word_count" : 5,
"key_word_density" : 2,
"writer" : {
"user_id" : ObjectId("5b6959e3dc68d21c6613c77d"),
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"editor" : {
"user_id" : 3,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"manager" : {
"user_id" : 3,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
}
}]
},
{
"project_id" : ObjectId("5b6959e3dc68d21c6613c82e"),
"exams" : [
{
"allotment_type" : "manual",
"exam_id" : 1,
"topic" : "something",
"word_count" : 5,
"key_word_density" : 2,
"writer" : {
"user_id" : ObjectId("5b6959e3dc68d21c6613c77d"),
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"editor" : {
"user_id" : 1,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"manager" : {
"user_id" : 1,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
}
},
{
"allotment_type" : "manual",
"exam_id" : 2,
"topic" : "something",
"word_count" : 5,
"key_word_density" : 2,
"writer" : {
"user_id" : ObjectId("5b6959e3dc68d21c6613c77e"),
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"editor" : {
"user_id" : 2,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"manager" : {
"user_id" : 2,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
}
},
{
"allotment_type" : "manual",
"exam_id" : 3,
"topic" : "something",
"word_count" : 5,
"key_word_density" : 2,
"writer" : {
"user_id" : ObjectId("5b6959e3dc68d21c6613c77c"),
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"editor" : {
"user_id" : 3,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"manager" : {
"user_id" : 3,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
}
}]
},
{
"project_id" : ObjectId("5b6959e3dc68d21c6613c82f"),
"exams" : [
{
"allotment_type" : "manual",
"exam_id" : 1,
"topic" : "something",
"word_count" : 5,
"key_word_density" : 2,
"writer" : {
"user_id" : ObjectId("5b6959e3dc68d21c6613c77d"),
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"editor" : {
"user_id" : 1,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"manager" : {
"user_id" : 1,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
}
},
{
"allotment_type" : "manual",
"exam_id" : 2,
"topic" : "something",
"word_count" : 5,
"key_word_density" : 2,
"writer" : {
"user_id" : ObjectId("5b6959e3dc68d21c6613c77e"),
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"editor" : {
"user_id" : 2,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"manager" : {
"user_id" : 2,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
}
},
{
"allotment_type" : "manual",
"exam_id" : 3,
"topic" : "something",
"word_count" : 5,
"key_word_density" : 2,
"writer" : {
"user_id" : ObjectId("5b6959e3dc68d21c6613c77c"),
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"editor" : {
"user_id" : 3,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
},
"manager" : {
"user_id" : 3,
"versions" : [
{
"id" : 1,
"file_path" : "abcd"
},
{
"id" : 2,
"file_path" : "abcd"
},
{
"id" : 3,
"file_path" : "abcd"
}
]
}
}]
}]);