我在使用Java查询mongodb中的ISODate字段时遇到了困难。我想要精确匹配日期。
以下是我如何查询第一个集合并获取ISODate字段“Timestamp”的方法。一旦我获得了这个日期,我就想使用相同的“Timestamp”值搜索另一个集合。
FindIterable<Document> docList = thermalComfortCollection.find();
for(Document doc: docList) {
String ts = doc.get("Timestamp").toString();
System.out.println(ts);
我正在格式化ISODate,因为它返回的日期格式与我想要搜索的格式不同。因此,我将其转换为这种模式:"yyyy-MM-dd HH:mm:ss"
final DateTimeFormatter inputFormat =
DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy");
// The parsed date
final ZonedDateTime parsed = ZonedDateTime.parse(ts, inputFormat);
// The output format
final DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String date = outputFormat.format(parsed);
我找不到如何编写ISODate类型的精确匹配语句,因此我将同时使用gte和lte条件来获取精确匹配..!
BasicDBObject query = new BasicDBObject("Timestamp", //
new BasicDBObject("$gte", date).append("$lte", date));
System.out.println(query);
查询不起作用。 你能告诉我我的代码哪里有问题吗?