У меня есть документ, имеющий следующую структуру:
report {
_id : "Jan-2018-0" // (Month-Year-Version)
month : "Jan",
year : 2018,
version : 0,
data : [......]
}
Список данных действительно огромен.
Теперь мой вариант использования заключается в создании нового отчета с версией 1, который состоит из существующих данных в версии 0.
РЕДАКТИРОВАТЬ : Это не просто обновление версии. Это скорее создание дубликата существующего документа.
Самый простой способ - прочитать из базы данных версии 0 и обновить идентификатор как «Jan-2018-1», а затем сохранить.
Но так как список данных огромен, я думаю, что не стоит читать весь документ.
Итак, сейчас я читаю документ, избегая поля данных, а затем сохраняю отчет после обновления идентификатора. А затем прочитайте данные на страницах и добавьте их в новую версию.
Примерно так:
Для сохранения новой версии без данных
Report report = reportRepository.findReport("Jan", 2018, 0); // ignores data field
report.setId("Jan-2018-1");
report.setVersion(1);
reportRepository.save(report);
Псевдокод для заполнения данными:
List<Data> datas = reportRepository.getDataByPages("Jan", 2018, 0, 0//offset, 100 //limit);
reportRepository.addData("Jan", 2018, 1, datas);
Есть ли другие подходы лучше, чем этот?
Использование Java Spring Mongo.