Spring数据mongodb:如何在findAll方法

时间:2015-12-29 08:41:52

标签: java spring mongodb spring-data-mongodb

我正在使用spring数据mongodb地理空间标准,我的要求是我必须使用项目的坐标和半径找到用户。当管理员添加项目时,它将适用于符合条件的用户。所以现在,我正在使用mongotemplate的findAll方法。但是将来用户可能会达到50000,所以我认为findAll效率不高。我正在寻找findAll中的限制集或任何替代方法来在spring数据mongodb中进行。

我的查询是

List<User> users = mongoTemplate.find(
                new Query(Criteria.where("address.coordinates").within(
                        new Circle(longitude, latitude, radius))), User.class);

请建议我如何在findall方法中使用游标限制。

我正在尝试使用

DBCollection collection = mongo.getDB(envConfiguration.getDBName())
                .getCollection("Users");
        DBCursor cursor = collection.find();
        cursor.limit(1000);
        while (cursor.hasNext()) {
            System.out.println(cursor.next());
        }

但现在的问题是我将如何使用我在示例中提到的地理空间查询。

Thannks

1 个答案:

答案 0 :(得分:1)

您可以使用skip提供的limitQuery方法,如下所示:

List<User> users = mongoTemplate
                .find(new Query(Criteria.where("address.coordinates")
                        .within(new Circle(longitude, latitude, radius)))
                        .limit(1000), 
                        User.class);

您还可以使用with(Pageable pageable)方法,最后但并非最不重要的是,您可以使用 Mongo存储库及其findAll(Pageable pageable)方法。