0
私は、それぞれが誕生日がISODateの日付形式であるユーザーの集まりがあるとします。例えば。 ISODate("1958-03-23T00:00:00.000Z")
。どのように私は、現在のday.Thisの誕生日を持つユーザーを取得するために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が。
'DateTime'(' Formatter'の静的内部クラスではないと思いますが) 'month'の値をチェックしましたか? 'Date.getMonth()'は0ベースの数値を返します。つまり、8月の場合は8の代わりに7を返し、8の場合は8を返します。 – Thomas
はい@トーマスで '+ 1'を追加しました – Winnie
jongoは分かりませんが、一般的にこの種類のクエリには集約は必要ありません。あなたが記述するのは単一条件の単純なfind()です。 – mtj