I am trying to do filter in mongoDB, but I am not getting the expected output. I am using $elemMatch
but still not getting expected out.
Agency Collection
[
{
"_id": "5d402d36035f3063657240ac",
"name": "test agency",
"msisdn": "99961110278",
"apps": [
{
"pincodes": [
"135001",
"122018"
],
"_id": "5d402d36035f3063657240ae",
"name": "DSB"
},
{
"pincodes": [
"135001",
"122017"
],
"_id": "5d402d36035f3063657240ad",
"name": "DBH"
}
],
"__v": 0
}
]
query on shell
db.Agency.find({'apps':{$elemMatch:{name: {$regex: 'DSB', $options: 'i'} ,pincodes: { $in : ['135001','134002']}}}})
getting output
[
{
"_id" : "5d401d4aba592260507479d2",
"name" : "test agency",
"msisdn" : "99961110278",
"apps" : [
{
"pincodes" : [
"135001",
"122017"
],
"_id" : "5d401d4aba592260507479d3",
"name" : "DSB"
}
],
"__v" : 0
}
,
{
"_id" : "5d402249035f3063657240a9",
"name" : "test agency",
"msisdn" : "99961110278",
"apps" : [
{
"pincodes" : [
"135001",
"122017"
],
"_id" : "5d402249035f3063657240ab",
"name" : "DSB"
},
{
"pincodes" : [
"135001",
"122017"
],
"_id" : "5d402249035f3063657240aa",
"name" : "DBH"
}
],
"__v" : 0
}
,
{
"_id" : "5d402d36035f3063657240ac",
"name" : "test agency",
"msisdn" : "99961110278",
"apps" : [
{
"pincodes" : [
"135001",
"122018"
],
"_id" : "5d402d36035f3063657240ae",
"name" : "DSB"
},
{
"pincodes" : [
"135001",
"122017"
],
"_id" : "5d402d36035f3063657240ad",
"name" : "DBH"
}
],
"__v" : 0
}]
expected output
[
{
"_id" : "5d401d4aba592260507479d2",
"name" : "test agency",
"msisdn" : "99961110278",
"apps" : [
{
"pincodes" : [
"135001",
"122017"
],
"_id" : "5d401d4aba592260507479d3",
"name" : "DSB"
}
],
"__v" : 0
}
,
{
"_id" : "5d402249035f3063657240a9",
"name" : "test agency",
"msisdn" : "99961110278",
"apps" : [
{
"pincodes" : [
"135001",
"122017"
],
"_id" : "5d402249035f3063657240ab",
"name" : "DSB"
}
],
"__v" : 0
}
,
{
"_id" : "5d402d36035f3063657240ac",
"name" : "test agency",
"msisdn" : "99961110278",
"apps" : [
{
"pincodes" : [
"135001",
"122018"
],
"_id" : "5d402d36035f3063657240ae",
"name" : "DSB"
}
],
"__v" : 0
}]