2015-02-19 3 views
0

Как получить разницу между двумя значениями даты в критериях Монго, а возвращаемое значение должно быть разницей в две даты (например, 10.01.2015, первая дата и 20.01.2015 - вторая дата). Мне нужно значение как 10? ? Может ли один помочь мне, как получить это в Java с помощью Spring Framework critieria)Как получить разницу между двумя значениями даты в критериях Монго?

ответ

0

Из этой статьи What's new in Spring Data MongoDB 1.4 M1, вы можете использовать andExpression, чтобы получить разницу между двумя значениями даты:

.andExpression("endDateTime - startDateTime").as("duration") 

качестве пример (непроверенные):

import static org.springframework.data.mongodb.core.aggregation.Aggregation.*; 

TypedAggregation<Trip> agg = newAggregation(Trip.class, 
    match(Criteria.where("userId").is("54e5cead3ab5c1dd97422d86")), 
    project("endDateTime", "startDateTime") 
    .andExpression("endDateTime - startDateTime").as("duration") 
); 

AggregationResults<DBObject> result = mongoTemplate.aggregate(agg, DBObject.class); 
List<DBObject> resultList = result.getMappedResults(); 

В Монго оболочки, вы можете сделать следующее:

db.collection.aggregate({$match:{ your-match } }, 
    { $group : { 
     _id : "$userId", 
     duration : { $subtract:["$endDateTime", "$startDateTime"]}}, 
    } }); 
Смежные вопросы