0

それぞれのユーザーの誕生日が ISODate 日付形式であるとします。例えば。ISODate("1958-03-23T00:00:00.000Z"). ジョンゴ集計クエリを使用して、現在の日付に誕生日を持つユーザーを取得するにはどうすればよいですか?

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());

少し早いですがお礼を。

4

1 に答える 1

0

ユーザーの誕生日を文字列として保存し、そのフィールドにインデックスを追加するのはどうですか。この場合、パフォーマンスが向上します。そして、集約を使用したくないことは確かです。クエリの直前に、現在の日付を取得する->DBに保存する文字列にフォーマットする-> db.find({birthDate: "0425(this is april 25)"})を実行する->結果を取得した後、必要なことを行います。

于 2016-08-03T20:54:42.467 に答える