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注释