使用 SpringData 检查 mongo 中是否存在实体,在多文档事务中抛出异常计数是不允许的
Check if entity exists in mongo with SpringData throws exception count is not allowed in multi document transaction
我使用 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.
存在操作优于计数操作。 Count 在 multi-document 笔交易中有限制 以下文档描述了解决方法 https://docs.mongodb.com/manual/core/transactions/#count-operation
最简单的解决方法是使用 findBy.. != null 更聪明的解决方法是编写聚合请求。