Проверьте, существует ли сущность в Монго, с помощью исключения исключений, генерируемых SpringData, в многодокументной транзакции - PullRequest
0 голосов
/ 04 марта 2019

Я использую springData и mongo 4.6.Я запускаю транзакцию, обновляю один документ в одной коллекции, а затем мне нужно проверить, существует ли другой документ в другой коллекции.

@Transaction
someService() {
     Object res1 = someService1DocuemntUpdate();
     // It fails here.
     boolean exists = anotherObjectRepository.exists(anotherObjectId);
     if (exists) {
         process(res1);
     }
}

И я получаю

com.mongodb.MongoCommandException: Command failed with error 50851 (Location50851): 'Cannot run 'count' in a multi-document transaction.

1 Ответ

0 голосов
/ 18 июля 2019

Операция сопротивления работает над операцией счета.Счетчик имеет ограничения в многодокументных транзакциях. В следующем документе описываются обходные пути https://docs.mongodb.com/manual/core/transactions/#count-operation

Самое простое решение - использовать findBy ..! = Null Более разумным решением является написание запроса на агрегацию.

...