spring data mongodb Query 及分页

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring data mongodb Query 及分页相关的知识,希望对你有一定的参考价值。

参考技术A 本文介绍自定义的方式

Mongodb使用的是基于json的查询语句。

通过将org.springframework.data.mongodb.repository.Query批注添加到存储库查询方法,可以指定要使用的MongoDB JSON查询字符串,而不是从方法名称派生查询,如以下示例所示:

占位符 ?0 是函数的参数。

注意: String类型的参数在绑定过程中会进行转义, 这意味着不能为之添加特殊的参数。

可以使用fields来设置返回的字段:

上例中结果Person对象中只会有firstname、lastname 和id 属性 , 其他属性没有 。

查询串和field返回定义可以使用SpEL表达式 在运行时进行动态创建 。
表达式通过包含所有参数的数组公开方法参数。 以下查询使用[0]声明lastname的谓词值(相当于?0参数绑定):

当传入参数为对象时, 实例:

上例等价于 where name = mdo.name .

更复杂的实例:

# ([0].name == null) or ([0].name.length() == 0) ? '$exists:true' : [0].name 为SpEL表达式 (三目表达式)。

模糊查询例子:

mongodb的正则表达式查询语法为:

例子:
根据前端上送的查询条件模糊匹配name 和idno , 当有值时查询之,无则查询所有:

输入参数:
mdo.setName("宋");
mdo.setIdno("112");
打印的日志为:

自定义repo的方法见其他博客部分, 大致步骤如下:

下面着重介绍使用Query 、Criteria 来创建查询条件 并使用分页:

缺点是, 总条数需要主动查询 。
query内部会根据上送的分页条件,综合使用skip 、limit 来实现分页效果。

以上是关于spring data mongodb Query 及分页的主要内容,如果未能解决你的问题,请参考以下文章

使用Spring访问Mongodb的方法大全——Spring Data MongoDB

如何仅返回 Spring Data MongoDB 中查询的特定字段?

Spring数据mongodb存储库语法中的@Query注释

Spring Data MongoDB 五:进阶文档查询(分页Morphia)

Spring Data (数据)MongoDB

Java Spring Data Mongodb 1.10 排序忽略案例