2017-10-11 5 views
0

Je veux obtenir tous les documents de l'employé dont le dob ISODate ("2017-10-11T18: 30: 00.000Z") correspond à la date du jour. Comme il ya une différence dans les années, je ne suis pas en mesure d'obtenir directement en appariant dob. Détails du schéma sont:Obtenir le document de mongodb basé sur la date et le mois

var employee = new mongoose.Schema({ 
    name: String, 
    code: String, 
    phone: String, 
    email: String, 
    status: String, 
    dob: Date 
}) 

donc j'ai essayé avec ces:

  • ne peut pas utiliser regex comme cela fonctionne sur la corde.
  • Impossible d'utiliser des opérateurs relationnels comme gt gte lt lte car ce n'est pas ce que je recherche.
  • Essayé avec d'autres opérateurs mongodb aussi.

Toute aide sera appréciée.

+0

si ur la date est comme createdAt dans laquelle millisecondes sont également stockées alors u besoin d'utiliser les opérateurs relationnels – Sam

Répondre

0

Vous pouvez utiliser pour faire correspondre le jour et le mois opérateurs d'agrégation date $month et $dayOfMonth, quelle que soit l'année:

db.employee.aggregate(
    [ 
    { 
     $project: { 
     day: { $dayOfMonth: "$dob" }, 
     month: { $month: "$dob" }, 
     name: true, 
     code: true, 
     phone: true, 
     email: true, 
     status: true 
     } 
    }, 
    { 
     $match: { 
     day: new ISODate().getDate(), 
     month: new ISODate().getMonth() + 1 
     } 
    } 
    ] 
)