如何根据mongodb中的“日”和“月”两个字符串字段查找谁的生日

问题描述 投票:0回答:1

我在 mongoDB 中有这个数据模型:

{
    "_id" : "KPu78LNXYKfraRF94",
    ...
    "aboutPage" : {
        ...
        "birthDay" : NumberInt(27),
        "birthMonth" : NumberInt(5)
    }
}

我想找到所有明天过生日的用户。 是否可以从“birthDay”和“birthMonth”生成日期时间字段并找到文档?年份根本不重要,我没有相关数据。 谢谢你:)

mongodb mongodb-query
1个回答
0
投票

使用

$dateFromParts
重建当年正确日期对象中的生日。然后,使用
$dateDiff
计算天数差异并获取从现在起 -1 天的出生日期(即出生日期是明天)

db.collection.aggregate([
  {
    $set: {
      birthDate: {
        "$dateFromParts": {
          "year": {
            "$year": "$$NOW"
          },
          "month": "$aboutPage.birthMonth",
          "day": "$aboutPage.birthDay"
        }
      }
    }
  },
  {
    "$set": {
      "daysFromToday": {
        "$dateDiff": {
          startDate: "$birthDate",
          endDate: "$$NOW",
          unit: "day"
        }
      }
    }
  },
  {
    "$match": {
      daysFromToday: -1
    }
  },
  {
    "$unset": [
      "daysFromToday",
      "birthDate"
    ]
  }
])

蒙戈游乐场

© www.soinside.com 2019 - 2024. All rights reserved.