Spring Data MongoDB之间的日期

我使用spring数据mongodb。

我想要两个日期之间的记录。 以下MongoDB查询有效:

db.posts.find({startDate: {$gte: start, $lt: end}}); 

我尝试过的Spring数据查询对象代码转换不起作用:

 Query query = new Query(); query.addCriteria(Criteria.where("startDate").gte(startDate) .and("startDate").lt(endDate)); 

构建我需要的Mongo查询的方法调用的正确顺序是什么?

不要在标准中包含’ 和(“startDate”) ‘部分。

代替 :

 query.addCriteria(Criteria.where("startDate").gte(startDate).and("startDate").lt(endDate)); 

你应该使用:

 query.addCriteria(Criteria.where("startDate").gte(startDate).lt(endDate)); 

当你包含’和(“startDate”)’部分时,Mongo会将它视为同一属性上的两个不同条目。

参考这里

 Query query = new Query( Criteria.where("ip").is(ip) .andOperator( Criteria.where("createdDate").lt(endDate), Criteria.where("createdDate").gte(startDate) ) ); 

这适用于Java驱动程序的2.7.2版

 DBCollection coll = db.getCollection("posts"); BasicDBObject date = new BasicDBObject(); date.append("$gte", new Date(startDate)); date.append("$lte", new Date(endDate)); DBObject query = new BasicDBObject(); query.put("date", date); DBCursor cursor = coll.find(query); 

此外,对于记录,您对gte和lte参数都有“startDate”。

我必须在现场publishedDate日期之间找到日期,这是我如何做到的:

  Criteria publishedDateCriteria = Criteria .where("publishedDateObject").gte(psDate) .lte(peDate); Query query = new Query(publishedDateCriteria); mongoTemplate.find(query, MyDocumentObject.class)); 

它有效,他是一些示例代码:

 Criteria criteria = Criteria.where("pt").gte(startDate) .andOperator(Criteria.where("pt").lt(endDate));