MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment agréger par date lorsqu'un horodatage complet est donné dans le cadre d'agrégation?

Vous pouvez le faire en utilisant les opérateurs d'agrégation suivants :

  • $groupe
  • $an
  • $mois
  • $jourDuMois

Cela vous donne le nombre d'erreurs pour chaque date :

db.errors.aggregate(
    { $group : {
        _id: {
            year : { $year : "$date" },        
            month : { $month : "$date" },        
            day : { $dayOfMonth : "$date" },
        },
        count: { $sum: 1 }
    }}
);

Cet exemple suppose que le champ de date dans vos documents d'erreur est date et de type BSON Date. Il existe aussi un type Timestamp dans MongoDB, mais l'utilisation de ce type est explicitement déconseillée par la documentation :

Remarque :Le type d'horodatage BSON est destiné à une utilisation interne de MongoDB. Dans la plupart des cas, lors du développement d'applications, vous souhaiterez utiliser le type de date BSON. Voir Date pour plus d'informations.