我正在使用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
答案 0 :(得分:1)
您可以使用skip
提供的limit
和Query
方法,如下所示:
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)
方法。