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));