Morphia查询日期范围

Morphia query date range

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"}}}]}

我想最终结果是一样的,但生成的查询更冗长。

criteriaadd方法结合使用

类似

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

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

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

希望您会发现它有用。