uja*_*ava 32 java spring mongodb-java spring-data
我使用spring数据mongodb.
我想要两个日期之间的记录.以下MongoDB查询有效:
db.posts.find({startDate: {$gte: start, $lt: end}});
Run Code Online (Sandbox Code Playgroud)
我尝试过的Spring数据查询对象代码转换不起作用:
Query query = new Query();
query.addCriteria(Criteria.where("startDate").gte(startDate)
.and("startDate").lt(endDate));
Run Code Online (Sandbox Code Playgroud)
构建我需要的Mongo查询的方法调用的正确顺序是什么?
Yoh*_*age 59
不要在标准中包含' 和("startDate") '部分.
代替 :
query.addCriteria(Criteria.where("startDate").gte(startDate).and("startDate").lt(endDate));
Run Code Online (Sandbox Code Playgroud)
你应该使用:
query.addCriteria(Criteria.where("startDate").gte(startDate).lt(endDate));
Run Code Online (Sandbox Code Playgroud)
当你包含'和("startDate")'部分时,Mongo会将它视为同一属性上的两个不同条目.
您还可以添加查询注释:
@Query("{'date' : { $gte: ?0, $lte: ?1 } }")
public List<AnyYourObj> getObjectByDate(Date from, Date to);
Run Code Online (Sandbox Code Playgroud)
或适当的弹簧数据方法签名:
public List<AnyYourObj> findByDateBetween(Date from, Date to);
Run Code Online (Sandbox Code Playgroud)
这两种方法都给出了相同的结果。您可以在此处阅读更多信息https://www.baeldung.com/queries-in-spring-data-mongodb 和此处https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/
我必须在现场之间找到日期publishedDate
,这是我的做法:
Criteria publishedDateCriteria = Criteria
.where("publishedDateObject").gte(psDate)
.lte(peDate);
Query query = new Query(publishedDateCriteria);
mongoTemplate.find(query,
MyDocumentObject.class));
Run Code Online (Sandbox Code Playgroud)
小智 5
Query query = new Query(
Criteria.where("ip").is(ip)
.andOperator(
Criteria.where("createdDate").lt(endDate),
Criteria.where("createdDate").gte(startDate)
)
);
Run Code Online (Sandbox Code Playgroud)
我确实喜欢这个
public interface PolicyRepository extends MongoRepository<Policy, String> {
@Query("{'lastDate':{$gt:?0,$lt:?1}}")
public List<Policy> findAllPolicies(Date today,Date somedate);
}
Run Code Online (Sandbox Code Playgroud)
小智 4
这适用于 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);
Run Code Online (Sandbox Code Playgroud)
另外,为了记录,您有 gte 和 lte 参数的“startDate”。
归档时间: |
|
查看次数: |
36061 次 |
最近记录: |