Есть коллекция:
[
{
"name": "Alex",
"cars": [
{
"label": "BMW",
"age": 13,
"things": [ ... ]
},
{
"label": "Mercedes",
"age": 8,
"things": [ ... ]
}
]
},
{ ... }
]
Надо получить коллекцию без некоторых `thing`'ов, по условию, используя MongoDB aggregations.
Написал код:
db.matches.aggregate([{
$project: {
'_id': '$_id',
'cars': {
$map: {
input: '$cars',
as: 'car',
in: {
'things': {
$filter: {
input: '$$car.things',
as: 'thing',
cond: {
$lte: [ '$$thing.cost', 10 ]
}
}
}
}
}
}
}
}
])
Но он требует явного перечисления всех сохраняемых полей, список которых в реальной коллекции варьируется (неизвестен). Как быть?