$objectToArray
конвертиране на data
обект в масив формат ключ-стойност
$filter
за повторение на цикъла на преобразувания по-горе масив
- проверете
$and
условия
$toDate
за да получите data
от дата на низ
$month
за да изберете месец от датата и $year
за да изберете година
$in
проверка в състояние, ако месецът е в масив от месеци и годината е в масив от години
$arrayToObject
преобразувайте обратно в обект от масив ключ-стойност
var years = [2021];
var months = [5];
db.collection.aggregate([
{
$project: {
data: {
$arrayToObject: {
$filter: {
input: { $objectToArray: "$data" },
cond: {
$and: [
{ $in: [{ $year: { $toDate: "$$this.k" } }, years] },
{ $in: [{ $month: { $toDate: "$$this.k" } }, months] }
]
}
}
}
}
}
}
])
Playground