$objectToArray
を利用できます (mongoDB 3.4.4以降)、 $ filter および$project
次のようなものを取得します:
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"
}
}
},
])
ここで作業中 をご覧いただけます。
アイデアは、オブジェクトを配列に分割し、それをフィルタリングしてから、その配列をオブジェクトに戻すことです。
city
でフィルタリングしました しかし、あなたはその考えを理解していると確信しています。