如何在MongoRepository上创建计数查询

时间:2012-04-20 23:14:19

标签: spring mongodb count

我正在创建一个MongoRepository,需要创建一个计数查询。有人可以通过SpringData MongoDB MongoRepository工具提供一个最佳方法的例子吗?所有的例子我都能找到引用返回列表而不是计数。

这是我想要做的事情(显然它不起作用):

public interface SchoolRepository extends MongoRepository<School, String> {
    @Query("db.school.count({studentStatus: ?0});")
    int getCountOfStudents(int studentStatus);
}

感谢。 -AP _

1 个答案:

答案 0 :(得分:1)

我发现这个问题,因为我试图做类似的事情。不幸的是,鉴于我在org.springframework.data.repository.query.parser.PartTree中看到的内容:

private static final Pattern PREFIX_TEMPLATE = Pattern.compile("^(find|read|get)(\\p{Upper}.*?)??By");

似乎不支持。

相反,我们可以通过创建新接口和实现它的类来向存储库添加自定义行为(请参阅reference manual section 1.4.1)。

public interface SchoolRepository extends CrudRepository<School, String>, SchoolRepositoryCustom {
    // find... read... get...
}

public interface SchoolRepositoryCustom {
    int getCountOfStudents(int studentStatus);
}

@Service
public class SchoolRepositoryImpl implements SchoolRepositoryCustom {
    @Autowired
    private SchoolRepository schoolRepository;

    public int getCountOfStudents(int studentStatus) {
        // ...
    }
}

请注意,该类名为SchoolRepositoryImpl,而不是SchoolRepositoryCustomImpl。