0

I'm building my query like this:

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

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

It builds this query:

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

So, it fails.

It sends query as an $date long, instead of an ISODate.

I mean, metadata.value.digitalitzacio.dataDigitalitzacio is stored as a ISODate into collection:

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

But it's queried as a $date long. How vould I solve that?

1 Answer 1

-1

From https://stackoverflow.com/a/30294522/9731186, the following code should work, I didn't tested it though. java.util.Date(int, int, int) is now deprecated.

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));
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.