2016-08-03 52 views
0

假设我有一群用户,每个用户都有一个ISODate日期格式的生日。例如。 ISODate("1958-03-23T00:00:00.000Z")。我如何使用jongo汇总查询来获取用户对当前手足之情的悦耳交响曲生日是我目前不过即使有用户生日不返回任何结果:查找用户是否在特定日期得到了生日

Date dateOfBirth = new Date(); 
Integer month = new DateTime(dateOfBirth).getMonthOfYear(); 
Integer day = new DateTime(dateOfBirth).getDayOfMonth(); 
List<User> users= IteratorUtils.toList(userJongo.aggregate(" 
    {$project:_id:1,dateOfBirth:1,name:1}}") 
    .and("{$match :{dateOfBirth.getDate(): {$eq: '"+day+"'}}}") 
    .and("{$match :{dateOfBirth.getMonth()+1: {$eq:'"+month+"'}}}") 
    .and("{$limit:"+limit+"}" 
    .as(User.class).iterator()); 

谢谢inadvance。

+0

我不知道'DateTime'(我认为它不是'Formatter'的静态内部类),但是你检查'month'的值吗?请注意'Date.getMonth()'将返回一个基于0的数字,即8月它将返回7而不是8,如果'month'是8,则不会得到匹配。 – Thomas

+0

是@Thomas这就是为什么我加了'+ 1' – Winnie

+0

我不知道jongo,但总的来说你不需要这种查询的聚合 - 你所描述的只是一个简单的find() 。 – mtj

回答

0

如何将用户生日保存为字符串并为该字段添加索引。 在这种情况下,你的表现会增加。 你确定不想使用聚合。 就在查询得到当前日期 - >格式到字符串,你保存到DB - >运行db.find({birthDate:“0425(这是4月25日)”}) - >获得结果后做任何你想要的。

相关问题