Я пытаюсь сгруппировать коллекцию файлов в зависимости от того, когда к ним последний раз обращались, в соответствии с данными, которые у меня есть в пн go.
Однако я не уверен, как вернуть больше документа из групповой операции.
Как мне вернуть документ со всей информацией в каждой группе?
Например, я сейчас возвращаю:
[
{
"year": [
2020
],
"month": [
2
],
"week": [
7
],
"day": [
2
],
"results": [
"filename-1",
"filename-2"
]
}
]
Я получаю только имя файла обратно в массиве c. Я хотел бы документ, а не только имя.
Код, который я использую для создания результата выше
public void groupTest() {
final String dateField = "lastAccessTime";
final LocalDate now = LocalDate.now();
final LocalDate firstDay = now.with(firstDayOfYear());
final LocalDate lastDay = now.with(lastDayOfYear());
final Criteria criteria =
new Criteria().andOperator(where(dateField).gte(firstDay), where(dateField).lte(lastDay));
final ProjectionOperation dateProjection =
project()
.and("_id")
.as("id")
.and("name")
.as("name")
.and("absolutePath")
.as("absolutePath")
.and(dateField)
.extractYear()
.as("year")
.and(dateField)
.extractMonth()
.as("month")
.and(dateField)
.extractWeek()
.as("week")
.and(dateField)
.extractDayOfWeek()
.as("day");
final GroupOperation groupBy =
group("year", "month", "week", "day")
.addToSet("name")
.as("results");
final Aggregation aggregation =
newAggregation(
match(criteria),
dateProjection,
groupBy,
sort(Sort.Direction.ASC, "year", "month", "week", "day"));
}
Мне бы хотелось, чтобы значение моих результатов было больше похоже на:
[
{
"year": [
2020
],
"month": [
2
],
"week": [
7
],
"day": [
2
],
"results": [
{
"id": "123",
"filename": "filename-1",
"size": 30000
},
{
"id": "456",
"filename": "filename-2",
"size": 30000
}
]
}
]
Любая помощь очень ценится