假设我有一组用户,每个用户都以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 :(得分:0)
如何将用户生日保存为字符串并为该字段添加索引。 在这种情况下,您的表现会增加。 你肯定不想使用聚合。 就在查询获取当前日期之前 - >格式化为保存到DB中的字符串 - &gt;运行db.find({birthDate:“0425(这是4月25日)”}) - &gt;获得结果后做任何你想做的事。