не удается преобразовать строку типа BSON в дату в конвейере агрегации

#mongodb #spring-boot

#mongodb #весенняя загрузка

Вопрос:

Я использую приведенный ниже код, чтобы получить месяц из поля даты в коллекции MongoDB. Я хочу использовать extractMonth() в MongoDB данных aggregation-Spring.

 ProjectionOperation project = project("Id").andExpression("Date").extractMonth().as("month");
GroupOperation group = group("Id", "month").count().as("count");
Aggregation agg = Aggregation.newAggregation(project, match, group).withOptions(Aggregation.newAggregationOptions().cursor(new BasicDBObject()).build());
DBObject resultset = mMongoTemplate.aggregate(agg, collectionName, JSONObject.class).getRawResults();
  

Но я получаю сообщение об ошибке ниже:

Не удается преобразовать строку типа BSON в дату в конвейере агрегации

Пример данных

 /* 1 */
{
    "_id" : "001",
    "createDate" : "2020-04-29T09:53:40.356 0000",
    "createdBy" : "abc",
},

/* 2 */
{
    "_id" : "002",
    "createDate" : "2020-03-16T22:59:42.023 0000",
    "createdBy" : "cde",
}
  

тип Date поля в коллекции: String

Spring-data-MongoDB version: 1.6.0 release

Как мне приступить к получению результатов с вышеуказанной версией?

Комментарии:

1. Вы никогда не должны хранить значения данных / времени в виде строки, используйте соответствующие Date объекты. Поскольку вы не предоставляете никаких образцов данных, мы не можем сказать вам, как их преобразовать.

2. Пример данных обновлен @WernfriedDomscheit