У меня есть база данных Mongo, и я храню даты в виде строк. Для каждого документа у меня есть поле под названием «дата создания» и поле под названием «дата завершения». Формат даты — «ГГГГ-ММ-дд» (например, «2011-12-18»). Даже я могу выполнить простую агрегацию, например, GreatThan, GreatThanEqual, я не могу найти разницу в датах, которую я должен найти, чтобы вычислить среднюю разницу в днях между датой завершения и датой создания.
Приведенный выше запрос я должен написать при весенней загрузке с MongoTemplate, если это возможно.
Я пытаюсь что-то вроде этого, но это не работает.
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(Criteria.where("creationdate").gte(date1).lte(date2).andOperator(Criteria.where("completiondate").ne(""))),
Aggregation.project("servicerequesttype").and(DateOperators.DateFromString.fromStringOf("completiondate").withFormat("%Y-%m-%d")).minus(DateOperators.DateFromString.fromStringOf("creationdate").withFormat("%Y-%m-%d")).as("diff"),
Aggregation.group("servicerequesttype").avg("diff").as("average")
);
date1, date2 получают строки типа "2011-01-01"