Du kan bruge $objectToArray
(mongoDB 3.4.4 og nyere), $filter og $project og få noget som dette:
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"
}
}
},
])
Du kan se den virke her
Ideen er at bryde objektet til array, filtrere det og derefter konvertere det array tilbage til objekt.
Jeg filtrerede på city men jeg er sikker på, at du forstår ideen.