当前位置: 首页 > 知识库问答 >
问题:

如何使用mongoTemplate实现Mongodb集合分页

宗政鸿志
2023-03-14

我是mongoDb中的一个noob,我需要为任何特定的集合实现分页,例如,比方说

我有一个集合Foo,我有一个函数从Foo集合返回所有记录

public List<Foo> getFoo(){

}

但是我需要通过实现分页从Foo获取记录,我如何使用mongoTemplate Spring data MongoDB来实现这一点呢?

共有1个答案

宇文飞翮
2023-03-14

对于常规分页,您可以在查询对象上使用.skip().limit()修饰符,您可以将其作为参数传入方法:

    Query query = new Query();
    query.addCriteria(Criteria.where("a").is("b"));
    query.skip(10);
    query.limit(10);

    List<Foo> results = mongoOperation.find(query, Foo);

其中.skip()是结果通过的方式,.limit()是返回的页面大小。

因此,从MongoTemplate派生MongoOperations的实例,并从那里使用标准的.find()操作。

不过,跳过和限制并不是性能最好的选项,尽量在自然索引(如_id)上存储最后看到的值,并使用范围查询来避免“跳过”1000个结果。

    Query query = new Query();
    query.addCriteria(Criteria.where("_id").gt(lastSeen));
    query.limit(10);
 类似资料:
  • 我想执行一个进行基本分页的聚合查询: 查找属于某个 以下是查询的详细信息: 这将查找所有匹配的文档: 这对文档进行了排序: 这会对文档进行计数,并传递未修改的文档,但我肯定这样做是错误的,因为事情从这里开始变得很奇怪: 这似乎跳过了一些文档: 这本应限制文件,但却没有: 这会返回计数,但不会返回数组中的文档,而是返回每个字段的数组: 结果是: 我哪里弄错了?

  • 问题内容: 我有一个可分页查询: 如何使用MongoTemplate执行它?我看不到有单个方法返回。 问题答案: 没有返回的方法。该方法返回一个普通的。 在内部用于调整和与MongoDB查询配合使用(由我认为是计数查询进行) 可以与MongoDB存储库结合使用,这是Spring数据存储库的一种特殊情况。 因此,你将不得不使用的用于分页结果(从实际继承)。

  • 我使用Spring Boot和Spring Data MongoDB与底层分片MongoDB集群进行接口。我的Spring Boot应用程序通过路由器访问集群。 使用Spring Data MongoDB,可以通过指定对象持久化到的集合,或者默认为类名(第一个字母小写)。这些藏品不需要预先存在;它们可以在运行时创建。 要在MongoDB中分片集合,您需要 1-在数据库上启用分片: 2-在分片数据库

  • 我对pageable有一个查询: 如何使用MongoTemplate执行它?我没有看到一个方法返回。

  • 我使用MongoTemplate处理MongoDB 我想将文档的列更新为当前时间 在Mongodb命令行客户端中,它将与 数据库集合名称。更新({_id:1},{timeCol:new Timestamp()});或db.collectionName。更新({_id:1},{timeCol:new Date()}); 但是我不知道我是如何通过使用mongo模板做到这一点的。 更新更新;update

  • 问题内容: 假设我有一个Post实体和一个Comment实体,以及一对多关系: 我如何实现这样的分页: 是否可以在JPA上使用@OneToMany集合来模拟动态分页,还是必须完全重写JPA的关联机制?(例如,创建一个PersistentList集合类型,该类型可以管理分页,排序和搜索)。 PS:我最近找到了Play!框架在JPA上使用了一个非常有趣的库:Siena。Siena非常易于使用,并且是J