$objectToArray
převést data
objekt ve formátu klíč–hodnota pole
$filter
iterovat smyčku výše převedeného pole
- zaškrtněte
$and
podmínky
$toDate
získat data
od data řetězce
$month
pro výběr měsíce od data a $year
vyberte rok
$in
check in podmínka, pokud je měsíc v poli měsíců a rok je v poli let
$arrayToObject
převést zpět na objekt z pole klíč–hodnota
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] }
]
}
}
}
}
}
}
])
Hřiště