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.