U kunt de $objectToArray
gebruiken (mongoDB 3.4.4 en hoger), $filter en $project
en krijg zoiets als dit:
db.collection.aggregate([
{
$project: {
obj: {
$objectToArray: "$info"
}
}
},
{
$project: {
_id: 0,
obj: {
$filter: {
input: "$obj",
as: "item",
cond: {
$eq: [
"$$item.v.city",
"NY"
]
}
}
}
}
},
{
$project: {
info: {
$arrayToObject: "$obj"
}
}
},
])
Je kunt het hier zien werken
Het idee is om het object op te splitsen in een array, het te filteren en vervolgens die array terug te converteren naar een object.
Ik heb gefilterd op city
maar ik weet zeker dat je het idee snapt.