SpringBoot中Mongo查询条件是集合中的字段的处理
来源:互联网 发布:c语言单向循环链表 编辑:程序博客网 时间:2024/06/05 04:00
MongoRepository
MongoRepository和普通的Repository一样,继承PagingAndSortingRepository,支持分页和普通的CRUD。之前已经提过Jpa的一些基本操作,下面讲几个 稍微特殊点的。
List<Person> findByAddressZipCode(ZipCode zipCode);List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);List<Topic> findByAuthorName(String name);
这几个都是根据实体的属性(属性也是对象)进行的查询,譬如Topic类关联了Author,Author有个name属性,那么就可以用findByAuthorName(String name);这样的方式查询。上面的两个也是一样的道理,类似于hibernate的”from Person where address.zipCode = “。
需要注意的是,仅适应于多对一和一对一,也就是关联的这个实体只能是对象,不能是集合。譬如Person里有个Set
如果需要条件查询的字段是集合,那么该怎么办呢?
假如需要查询address.name=”朝阳区”的所有Person集合。在hibernate里是比较简单的,可以直接使用@Query(”from Person p inner join p.addresses as a where a.name = ‘朝阳区’”)这样的注解形式。这是hibernate特有的hql语法。那在mongo里是不能这么用的,要完成上面的查询,只依靠MongoRepository就不够用了,所以Spring同样也封装了MongoTemplate类,来完成mongo的操作,可定制性更高。
MongoTemplate
查询的话,主要工作就是用来完善org.springframework.data.mongodb.core.query.Criteria,Criteria是条件的集成,譬如上面的查询条件中对象是集合,可以用下面的方法
Criteria criteria = Criteria.where("addresses").elemMatch(Criteria.where("name").is("朝阳区")); Query query = new Query(criteria); return mongoTemplate.find(query, Person.class);
使用MongoTemplate可以完成对mongo的增删改查。
官方文档:http://docs.spring.io/spring-data/data-mongo/docs/current/reference/html/
下面是简写的例子:
mongoTemplate.findOne(new Query(Criteria.where("id").is(params.get("id"))), User.class,collectionName); List<User> result = mongoTemplate.find(new Query(Criteria.where("age").lt(params.get("maxAge"))), User.class,collectionName); //updatemongoTemplate.upsert(new Query(Criteria.where("id").is(params.get("id"))), new Update().set("name", params.get("name")), User.class,collectionName); //removemongoTemplate.remove(new Query(Criteria.where("id").is(params.get("id"))),User.class,collectionName);
更多的内容可以看看这一篇:
http://blog.csdn.net/congcong68/article/details/44545253
阅读全文
0 0
- SpringBoot中Mongo查询条件是集合中的字段的处理
- MongoDB中关于查询条件中包含集合中字段的查询
- class文件中的字段表集合--field字段在class文件中是怎样组织的
- Springboot中对jpa动态查询条件的封装
- mysql中查询条件字段为空的查询
- 4 Springboot中使用redis存储集合数据,并模拟条件查询、分页读取
- mongodb中根据集合中的字段关系返回查询结果
- mongo更新与删除集合中的字段python
- mongo命令行集合查询
- 1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
- SQL中,查询条件中的引号处理,单引号,双引号
- mongo java中and、or多条件查询
- spring-mongo-template中对内嵌集合对象 不定参数的查询
- Mongo多条件查询与分组的使用
- 条件查询List集合,由查询的结果,算出一行数据,添加到集合中!
- java中前台输入查询条件中包含“’”的处理
- oracle 中sql的查询条件有NULL的处理
- mongo从怎么在指定查询条件的前提下从数据库中读出指定key对应的value
- HashMap详解
- IDA导入Jni.h
- leetCode---Range Sum Query
- c/c++函数参数的入栈顺序和计算顺序
- Windows Apache+Tomcat集群部署
- SpringBoot中Mongo查询条件是集合中的字段的处理
- 比特币地址生成(图形化)****
- LUA 脚本
- 浏览器兼容性测试应该如何做?
- 关于adb工具使用
- Block 为什么要用 Copy 修饰
- Python 3.x MySQL 功能封装
- python中经典错误
- openlayer3 判断一个点是否在闭合图形里