$objectToArray
data
umwandeln Objekt in das Schlüsselwertformat des Arrays
$filter
um die Schleife des oben konvertierten Arrays zu durchlaufen
- überprüfen Sie
$and
Bedingungen
$toDate
um data
zu erhalten ab Stringdatum
$month
um Monat aus Datum und $year
auszuwählen Jahr auswählen
$in
Überprüfen Sie die Bedingung, wenn der Monat in einem Array von Monaten und das Jahr in einem Array von Jahren liegt
$arrayToObject
zurück in Objekt aus Schlüsselwert-Array umwandeln
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] }
]
}
}
}
}
}
}
])
Spielplatz