Sie können $objectToArray
verwenden (mongoDB 3.4.4 und höher), $filter und $project und so etwas bekommen:
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"
}
}
},
])
Sie können sehen, wie es hier funktioniert
Die Idee ist, das Objekt in ein Array zu zerlegen, es zu filtern und dieses Array dann wieder in ein Objekt umzuwandeln.
Ich habe nach city gefiltert aber ich bin sicher, Sie verstehen es.