Morphia查询日期范围

时间:2017-09-13 21:14:12

标签: java mongodb morphia

Morphia中以下Mongo查询的等价物是什么?

db.events.find({ "date": { $gte: ISODate("2001-01-01") , $lt: ISODate("2001-01-02")} })

目前我有以下代码

Query<Event> query = dataStore.find(Event.class);
query.field("date").greaterThanOrEq(startDate).field("date").lessThan(endDate);

但它导致以下Mongo查询

{ "$and" : [ { "date" : { "$gte" : { "$date" : "2001-01-01T00:00:00.000Z"}}} , { "date" : { "$lt" : { "$date" : "2001-01-02T00:00:00.000Z"}}}]}

我认为最终结果是相同的,但结果查询更详细。

2 个答案:

答案 0 :(得分:0)

criteriaadd方法

一起使用

这样的东西
Query<Event> query = datastore.find(Event.class);
query.criteria("date").greaterThanOrEq(startDate).add(query.criteria("date").lessThan(endDate));

答案 1 :(得分:0)

您需要创建一个查询,然后添加日期范围条件,如下所示。

Query<Event> queryForEvent = ds.createQuery(Event.class);
queryForEvent.field("date").greaterThanOrEq(startDate);
queryForEvent.field("date").lessThan(endDate);
List<Event> eventList = queryForEvent.asList();

希望你会发现它很有用。