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.