У меня есть класс книги -
public class Book {
@Id
private int bookId;
private String name;
private String authorName;
}
Мой класс репозитория расширяется mongoRepository
Ниже приведены шаги операций, которые я выполняю -
- Я используя mongoTemplate.aggregate для агрегирования некоторых данных в классе Book
- Затем я удаляю книги по bookId с использованием bookRepository.deleteById ()
- , затем сохраняю результат агрегирования в bookRepository с помощью bookRepository.saveAll ( )
- затем на следующем шаге я использую класс книги для агрегирования, и моя агрегация происходит из класса книги, используя mongoTemplate.aggregate ().
- удалить запись для перикулярного bookId из новый репозиторий классов с именем libraryRepository с помощью libraryRepository.deleteByBookId ()
- с сохранением результата агрегирования в libraryRepostiry с использованием libraryRepository.saveAll ()
И ниже приведены мои результаты -
- шаги с 1 по 3 работают нормально, и я вижу результат в db
- , шаг 4 не выдает никакой ошибки, и w Когда я попытался запустить его в robo3T вручную, он отлично работает
- после шага 6, ожидается, что он увидит документ, содержащий агрегированные данные в коллекции библиотеки, но иногда это работает, и иногда сам документ удаляется. .
Насколько я понимаю, это может произойти только тогда, когда данные из коллекции Библиотеки были удалены, и мы не получаем никакого результата от агрегирования на шаге 4, поэтому мы ничего не сохраняем в коллекции, которая является почему документ удаляется. И в случае неудачи я не вижу ни одного журнала сохранения данных в сбор, но когда он проходит, я вижу эти строки, так что каким-то образом агрегация дает нулевое значение в качестве результата. Но этого не должно происходить, потому что в моем агрегации я выполняю поиск из коллекции Book в другую коллекцию и добавляю некоторые поля из этой коллекции. Если в Book есть данные, то это объединение не даст нулевого результата, что в моем случае верно, так как в Book есть данные.
Единственное, о чем я могу подумать, что, возможно, нарушил его, это шаг 3, данные были удалены в Коллекции книг, и пока мы хранили данные в Коллекции книг, вторая агрегация, которая находится на шаге 4, выполнялась до завершения Шаг 3. Возможно ли это? Есть ли что-нибудь еще, что могло бы сломать его и какое-либо решение для него?
Я использую версию оболочки MongoDB v4.2.3.