web-dev-qa-db-ja.com

春のデータmongodbによるISO日付の検索

クエリを使用して生年月日を検索しようとしています

criteria = Criteria.where("dob").lte(new DateTime().toDate());

そして、春のデータmongodbは以下のクエリを生成します:

MongoTemplate:クエリを使用して検索:

{ "dob" : { "$lte" : { "$date" : "2015-05-16T07:55:23.257Z"}}}

フィールド:クラスの場合はnull:クラスcom.temp.model.User in collection:user

しかし、結果は得られませんでした。

Mongodbの私のdobフィールド:

{"dob" : ISODate("1991-01-23T00:00:00Z")}

ISODate形式でdobを検索する方法は?

9
Deepak Agrawal

このコードは、必要なものに対して正常に機能するはずです。

criteria = Criteria.where("dob").lte(new Java.util.Date());

私のテストは次のコードで行いますが、これは正常に機能します。

Lis<User> users = mongoOps.find(query(where("isActive").is(true).and("CreatedDate").lte(new Java.util.Date())), User.class);
5
moonlighter

クエリはSpringデータmongodb0から完全に実行されます

{"dob":{"$ lte":{"$ date": "2015-05-16T07:55:23.257Z"}}}。

ただし、mongoCLIからは実行されません。

CLIで実行するクエリ。

{dob:ISODate( "2015-05-15T07:55:23.257Z")}

ありがとう

6
Deepak Agrawal

IDE SPRING DAOにISODate()を使用して文字列をDateオブジェクトに変換する場合

query.addCriteria(Criteria.where("created").ne(null).andOperator(
                Criteria.where("created").gte(DateUtils.getDate("2016-04-14 00:00:00", DateUtils.DB_FORMAT_DATETIME)),
                Criteria.where("created").lte(DateUtils.getDate("2016-04-14 23:59:59", DateUtils.DB_FORMAT_DATETIME))
            ));


public final class DateUtils {    

    public static final String DB_FORMAT_DATETIME = "yyyy-M-d HH:mm:ss";        

    private DateUtils() {
        // not publicly instantiable
    }       

    public static Date getDate(String dateStr, String format) {
        final DateFormat formatter = new SimpleDateFormat(format);
        try {
            return formatter.parse(dateStr);
        } catch (ParseException e) {                
            return null;
        }
    }



} 
2
Dima