我在 mongoDB 中有这个数据模型:
{
"_id" : "KPu78LNXYKfraRF94",
...
"aboutPage" : {
...
"birthDay" : NumberInt(27),
"birthMonth" : NumberInt(5)
}
}
我想找到所有明天过生日的用户。 是否可以从“birthDay”和“birthMonth”生成日期时间字段并找到文档?年份根本不重要,我没有相关数据。 谢谢你:)
使用
$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"
]
}
])