gpt4 book ai didi

java - MongoTemplate 按日期转换查找

转载 作者:可可西里 更新时间:2023-11-01 09:27:58 24 4
gpt4 key购买 nike

我正在尝试转换以下查询:

{ "cd" : { "$lte" : ISODate("2013-06-30T09:12:29Z") , "$gte" : ISODate("2013-06-11T09:12:29Z")}}

MongoTemplateQuery 一起使用。

目前我正在做的事情是这样的:

 Query query = new Query();
query.addCriteria(Criteria.where("cd").lte(request.getTo()).gte(request.getFrom()));
mongoTemplate.find(query,MyDesiredEntity.class)

但是上面的查询没有返回任何结果,当第一个查询返回它应该返回的 15 左右时(request.getTo 和 request.getFrom 是 java.util.Date)。

有没有办法用 org.springframework.data.mongodb.core.query.Query 实现这一点

最佳答案

我通过反转 lte 和 gte 调用使它起作用。我写了一个测试来证明它有效:

@Test
public void shouldBeAbleToQueryBetweenTwoDates() throws Exception {
// setup
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");

MongoTemplate mongoTemplate = new MongoTemplate(new Mongo(), "TheDatabase");
DBCollection collection = mongoTemplate.getCollection("myObject");
// cleanup
collection.drop();

// date that should match
Date expectedDate = dateFormat.parse("2013-06-12T00:00:00Z");
collection.insert(new BasicDBObject("cd", expectedDate));
// date that should not match (it's last year)
collection.insert(new BasicDBObject("cd", dateFormat.parse("2012-06-12T00:00:00Z")));

// create and execute the query
final Date to = dateFormat.parse("2013-06-30T09:12:29Z");
final Date from = dateFormat.parse("2013-06-11T09:12:29Z");

Query query = new Query();
query.addCriteria(Criteria.where("cd").gte(from).lte(to));

// check it returned what we expected
List<MyObject> basicDBObjects = mongoTemplate.find(query, MyObject.class);
Assert.assertEquals(1, basicDBObjects.size());
Assert.assertEquals(expectedDate, basicDBObjects.get(0).cd);
}

注意事项:

  • 这是 TestNG 而不是 JUnit
  • 我使用 SimpleDateFormat 只是为了让日期测试更容易并且(可能)更易读

主要需要注意的是:

query.addCriteria(Criteria.where("cd").gte(from).lte(to));

在我颠倒 ltegte 的顺序之前,查询没有返回任何内容。

关于java - MongoTemplate 按日期转换查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17467568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com