$objectToArray
converterdata
objeto para formato de valor-chave de matriz$filter
para iterar o loop do array convertido acima- verifique
$and
condições $toDate
para obterdata
da data da string$month
para selecionar o mês a partir da data e$year
para selecionar o ano$in
verifique a condição se o mês estiver em uma matriz de meses e o ano estiver em uma matriz de anos$arrayToObject
converter de volta para objeto da matriz de valor-chave
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