根据日期和月份从mongodb获取文档

时间:2017-10-11 04:14:01

标签: node.js mongodb mongoose

我希望获得所有那些dob ISODate(" 2017-10-11T18:30:00.000Z")与当前日期匹配的员工文档。由于年份不同,所以我无法通过匹配dob直接获得。 架构详细信息包括:

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

所以我尝试了这些:

  • 无法使用regex,因为它适用于字符串。
  • 无法使用gt gte lt lte之类的关系运算符,因为它不是我想要的。
  • 也和其他mongodb运营商一起尝试过。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用日期汇总运算符$month$dayOfMonth来匹配当前日期和月份,无论年份如何:

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
      }
    }
  ]
)