mongo Document looks like this
{
"_id" : ObjectId("59118981125ad5448ccc5684"),
"type" : "Single",
"name" : "Gift User A",
"duration" : NumberLong(30),
"schedule_dates" : [
{
"sessionId" : "15161b641035e09b",
"start_date" : ISODate("2017-05-09T10:18:00.000Z"),
"end_date" : ISODate("2017-05-09T10:48:00.000Z"),
"status" : "EXPIRED"
},
{
"sessionId" : "bd631f8564d8a612",
"start_date" : ISODate("2017-05-10T10:18:00.000Z"),
"end_date" : ISODate("2017-05-10T10:48:00.000Z"),
"status" : "OPEN"
},
{
"sessionId" : "bd631f8564d8a612",
"start_date" : ISODate("2017-05-11T10:18:00.000Z"),
"end_date" : ISODate("2017-05-11T10:48:00.000Z"),
"status" : "OPEN"
}
]
}
i want to filter the result with greater than start date if pass present date - i dont want past schedule_dates objects.
{
"_id" : ObjectId("59118981125ad5448ccc5684"),
"type" : "Single",
"name" : "Gift User A",
"duration" : NumberLong(30),
"schedule_dates" : [
{
"sessionId" : "bd631f8564d8a612",
"start_date" : ISODate("2017-05-10T10:18:00.000Z"),
"end_date" : ISODate("2017-05-10T10:48:00.000Z"),
"status" : "OPEN"
},
{
"sessionId" : "bd631f8564d8a612",
"start_date" : ISODate("2017-05-11T10:18:00.000Z"),
"end_date" : ISODate("2017-05-11T10:48:00.000Z"),
"status" : "OPEN"
}
]
}
in spring service
Query upComingSessionQuery = new Query();
upComingSessionQuery.with(new Sort(Sort.Direction.ASC, "scheduleDates.startDate"));
Criteria criteria = Criteria.where("userid").in(userService.getUserWithAuthorities().getId()).andOperator(Criteria.where("scheduleDates").elemMatch(Criteria.where("startDate").gt(todayDate)));
upComingSessionQuery.addCriteria(criteria);
List<Schedule> schedules = mongoOps.find(upComingSessionQuery, Schedule.class);
but it is not filtering.
Can someone help me to get these data-only.