Spring boot mongodb: запрашивать дату как ISODate вместо $ date long - PullRequest
0 голосов
/ 07 декабря 2018

Я строю свой запрос следующим образом:

Date date = new Date();
Criteria criteria = Criteria
    .where("metadata.value.digitalitzacio.dataDigitalitzacio")
    .is(new Date(2018,10,10));

this.mongoTemplate.find(Query.query(criteria));

Он строит этот запрос:

Query: { "metadata.value.digitalitzacio.dataDigitalitzacio" : { "$date" : 61499948400000 } }

Итак, он терпит неудачу.

Он отправляет запрос как$date long вместо ISODate.

Я имею в виду, metadata.value.digitalitzacio.dataDigitalitzacio сохраняется как ISODate в коллекции:

{
    "_id" : "cpd4-175ec7f0-d70f-4b63-a709-69918d98c4f2",
    "metadata" : [
        {
            "user" : "RDOCFO",
            "value" : {
                "digitalitzacio" : {
                    "csvDigitalitzacio" : "eeeeeeeeee",
                    "dataDigitalitzacio" : ISODate("2018-10-10T00:00:00Z"),
                    "empleatDigitalitzacio" : "empleat-digitalitzacio"
                }
            }
        }
    ]
}

Но запрашивается как $date long.Как мне решить это?

1 Ответ

0 голосов
/ 11 декабря 2018

С https://stackoverflow.com/a/30294522/9731186, следующий код должен работать, хотя я его не проверял.java.util.Date(int, int, int) устарела.

String string_date = "10-10-2018";
SimpleDateFormat f = new SimpleDateFormat("dd-MM-yyyy");
Date d = new Date();
try {
    d = f.parse(string_date);
    long milliseconds = d.getTime();
} catch (ParseException ex) {
    ex.printStackTrace();
}
  Criteria criteria = Criteria
    .where("metadata.value.digitalitzacio.dataDigitalitzacio")
    .is(d);
}
  this.mongoTemplate.find(Query.query(criteria));
}
...