我想分享Spring Data Mongo.From docs spring data mongo可以做到:
public interface TwitterRepository extends MongoRepository<Twitter, String> {
List<Twitter> findByNameIn(List<String> names, Pageable pageable);
}
如果Twitter文档对象是这样的:
@Document
public class Twitter {
String name;
@DBRef
List<Comment> comments
}
spring数据mongo是否支持对注释进行分页?
答案 0 :(得分:2)
注意:指定的代码未经过测试,只会作为指针供您使用
以下mongo查询限制了要返回的数组大小:
db.Twitter.find( {}, { comments: { $slice: 6 } } )
上述机制可用于强制执行分页:
db.Twitter.find( {}, { comments: { $slice: [skip, limit] } } )
您可以尝试注释您的方法
@Query(value="{ 'name' : {'$in': ?0} }", fields="{ 'comments': { '$slice': [?1,?2] } }")
List<Twitter> findByNameIn(List<String> names, int skip, int limit);
}
您可以在查询中指定:
Query query = new Query();
query.fields().slice("comments", 1, 1);
mongoTemplate.find(query, DocumentClass.class);
或者您可以尝试使用以下命令直接执行命令:
mongoTemplate.executeCommand("db.Twitter.find( {}, { comments: { $slice: [skip, limit] } } )")
一般分页机制仅适用于文档级别,其示例如下所示。
对于他们,您必须在应用程序级别手动拼接返回的评论。
如果您使用MongoTemplate
班级(Spring-Data Docs),则:
使用org.springframework.data.mongodb.core.query.Query
班级的skip()
和limit()
方法进行分页
Query query = new Query();
query.limit(10);
query.skip(10);
mongoTemplate.find(query, DocumentClass.class);
如果您使用Repository
(Spring-Data-Reposioty),请使用PagingAndSortingRepository