MongoDB:如何使用MongoDB获取“今天,即将来临的生日和过去的生日”列表?

维诺德·帕蒂达(Vinod Patidar)

如何通过过去的日子使用MongoDB获取今天,即将到来的生日和过去的生日,例如接下来的60天即将到来的生日或过去60天的生日等。

我们已使用以下json格式将用户的出生日期保存在users集合中。

"dob" : {
    "year" : "2015",
    "month" : "06",
    "day" : "30"
},

"birthday" : ISODate("1975-08-26T18:30:00.000Z") // Correct date format

基本上,我的解决方案在“正确答案”中,但不清楚如何与我的集合数据集一起使用。

查找在接下来的30天内是否有人在mongo过生日

谢谢!

维诺德·帕蒂达(Vinod Patidar)

在“用户”集合中,生日日期应以以下格式存储:

"birthday" : ISODate("1975-08-26T18:30:00.000Z")

var today = new Date();
var m1 = { "$match" : {  "birthday" : { "$exists" : true, "$ne" : '' } } }; 
var p1 = { 
    "$project" : {
        "_id" : 0,
        "username" : 1,
        "birthday" : 1,
        "todayDayOfYear" : { "$dayOfYear" : today }, 
        "dayOfYear" : { "$dayOfYear" : "$birthday" }
    } 
};
var p2 = { 
    "$project" : {
        "username" : 1,
        "birthday" : 1,
        "daysTillBirthday" : { "$subtract" : [
             { "$add" : [ 
                     "$dayOfYear",
             { "$cond" : [{"$lt":["$dayOfYear","$todayDayOfYear"]},365,0 ] }
             ] },
             "$todayDayOfYear"
        ] }
    } 
};

if ( showcase == 'today' ) {
    var m2 = { "$match" : {  "daysTillBirthday" : { "$lt" : 1 } } }; // lt:1 = Today Birthdays
} else if ( showcase == 'upcoming' ) {
    var m2 = { "$match" : {  "daysTillBirthday" : { "$lt" : 60 } } }; // lt:60 = Next 60 days Upcoming Birthdays 
} else if ( showcase == 'past' ) {
    var m2 = { "$match" : {  "daysTillBirthday" : { "$gt" : 60 } } }; // gt = Past 60 days Birthdays
}
db.users.aggregate([m1, p1, p2, m2]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在TimeZone中获取今天有生日的用户

我如何使用laravel获得今天,过去7天和过去30天的利润

线程中断:它将取消即将来临的wait()调用吗?

如何按即将到来的生日顺序获取联系人?

如何从Android中的Facebook获取用户性别和生日

我为什么要使用即将来临的let!...而且!句法?

如何使用R播放生日音乐?

如何使用django获取两个日期之间的生日列表

使用Microsoft Graph API显示Office 365用户的即将生日的列表

Meetup API,如何获取性别和生日

如何使用两列获取过去的记录和即将发生的记录

如何仅基于日期和月份获取用户的生日

不建议使用Google Plus API。我如何从requestScopes(Scope(Scopes.PROFILE))获取性别和出生日期

如何使div元素(即将来临)具有响应性?

如何仅获取将来的日期而不是过去和过去的日期?

如何从Mongodb的生日起计算平均年龄?

如何根据连续的即将来临的数据C#形成5分钟的高低开盘价?

使用Dojo处理(生日)日期和时区

获取今天有生日的联系人

如何获取生日C#

显示今天的生日

Excel和生日格式

如何获取从今天到本月底的生日?

facebook connect SDK示例:如何获取位置和生日?

如何从生日EKEvent获取CNContact

如何使用FirebaseAuth从Google供应商获取性别和生日?

如何以今天,明天,昨天的形式获取生日日期?

如何让用户今天过生日?

从db获取今天的出生日期