我正在建立这样的查询:
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
。我该怎么解决?
答案 0 :(得分:0)
在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));
}