sql >> Database >  >> NoSQL >> MongoDB

Aggregatie per jaar en maand in MongoDB

  • initialiseer verzoekparameters
var year = req.year;
var month = req.month;
  • stel standaard jaarvoorwaarde in
var condition = [{
  $eq: [{ $substr: ["$$this.k", 0, 4] }, String(year)]
}];
  • controleer of de maand beschikbaar is en niet allemaal, voeg dan een voorwaarde toe
if (month && month != "all") {
  condition.push({
    $eq: [{ $substr: ["$$this.k", 5, 2] }, String(month)] 
  });
}
  • $filter om de codelus te herhalen en boven de voorbereide voorwaarden te filteren
db.collection.aggregate([
  {
    $set: {
      code: {
        $filter: {
          input: "$code",
          cond: { $and: condition }
        }
      }
    }
  }
])

Speeltuin




  1. Filter subdocumentarray terwijl u nog steeds bovenliggende gegevens retourneert indien leeg

  2. MongoDB voor elk()

  3. MongoDB:tel het aantal items in een array

  4. Prestaties van Mongo DB-updatequery's