提问人:podeig 提问时间:11/18/2023 更新时间:11/18/2023 访问量:38
如何根据mongodb中的两个字符串fild“day”和“month”查找谁的生日
How to find who has birthday based on two string filds "day" and "month" in mongodb
问:
我在mongoDB中有这个数据模型:
{
"_id" : "KPu78LNXYKfraRF94",
...
"aboutPage" : {
...
"birthDay" : NumberInt(27),
"birthMonth" : NumberInt(5)
}
}
我想找到明天过生日的所有用户。 是否可以从“birthDay”和“birthMonth”生成DateTime字段并查找文档?年份根本不重要,我没有关于它的数据。 谢谢:)
答:
1赞
ray
11/18/2023
#1
使用 在当前年份的适当日期对象中重建出生日期。然后,计算天数的差异,并得到从现在起 -1 天的出生日期(即出生日期是明天)$dateFromParts
$dateDiff
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: {
$gte: -1,
$lt: 3
}
}
},
{
"$unset": [
"daysFromToday",
"birthDate"
]
}
])
评论
0赞
podeig
11/18/2023
看起来这就是我需要的。谢谢!只有一件事:我得到的生日恰好是 -1(天数)天,但如果我想进入这个时期(今天 - 出生日 <= 今天< 3 天),有可能吗?
0赞
ray
11/18/2023
@podeig更新了答案以在时间段内选择
0赞
podeig
11/20/2023
好!我工作正常!感谢您的帮助!有好的一天!:-)
评论