`
sunxboy
  • 浏览: 2871887 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Mongodb与spring集成 MongoRepository实现增删改查和复杂查询

 
阅读更多

与HibernateRepository类似,通过继承MongoRepository接口,我们可以非常方便地实现对一个对象的增删改查,要使用Repository的功能,先继承MongoRepository<T, TD>接口,其中T为仓库保存的bean类,TD为该bean的唯一标识的类型,一般为ObjectId。之后在service中注入该接口就可以使用,无需实现里面的方法,spring会根据定义的规则自动生成。

例:

public interface PersonRepository extends 

MongoRepository<Person, ObjectId>{
//这里可以添加额外的查询方法
}

 

但是MongoRepository实现了的只是最基本的增删改查的功能,要想增加额外的查询方法,可以按照以下规则定义接口的方法。自定义查询方法,格式为“findBy+字段名+方法后缀”,方法传进的参数即字段的值,此外还支持分页查询,通过传进一个Pageable对象,返回Page集合。

例:

 

public interface PersonRepository extends MongoRepository<Person, ObjectId>{ //查询大于age的数据 public Page<Product> findByAgeGreaterThan(int age,Pageable page) ; }
 

 

 

下面是支持的查询类型,每三条数据分别对应:(方法后缀,方法例子,mongodb原生查询语句)

GreaterThan(大于) 
findByAgeGreaterThan(int age) 
{"age" : {"$gt" : age}}
LessThan(小于) 
findByAgeLessThan(int age) 
{"age" : {"$lt" : age}}
Between(在...之间) 
findByAgeBetween(int from, int to) 
{"age" : {"$gt" : from, "$lt" : to}}
IsNotNull, NotNull(是否非空) 
findByFirstnameNotNull() 
{"age" : {"$ne" : null}}
IsNull, Null(是否为空) 
findByFirstnameNull() 
{"age" : null}
Like(模糊查询) 
findByFirstnameLike(String name) 
{"age" : age} ( age as regex)
(No keyword) findByFirstname(String name) 
{"age" : name}
Not(不包含) 
findByFirstnameNot(String name) 
{"age" : {"$ne" : name}}
Near(查询地理位置相近的) 
findByLocationNear(Point point) 
{"location" : {"$near" : [x,y]}}
Within(在地理位置范围内的) 
findByLocationWithin(Circle circle) 
{"location" : {"$within" : {"$center" : [ [x, y], distance]}}}
Within(在地理位置范围内的) 
findByLocationWithin(Box box) 
{"location" : {"$within" : {"$box" : [ [x1, y1], x2, y2]}}}

 

尽管以上查询功能已经很丰富,但如果还不能满足使用情况的话可以用一下方法---基于mongodb原本查询语句的查询方式。 
例:在原接口中加入

 

@Query("{ 'name':{'$regex':?2,'$options':'i'}, sales': {'$gte':?1,'$lte':?2}}") public Page<Product> findByNameAndAgeRange(String name,double ageFrom,double ageTo,Pageable page);
 

 

注释Query里面的就是mongodb原来的查询语法,我们可以定义传进来的查询参数,通过坐标定义方法的参数。

 

还可以在后面指定要返回的数据字段,如上面的例子修改如下,则只通过person表里面的name和age字段构建person对象。

@Query(value="{ 'name':{'$regex':?2,'$options':'i'}, sales':{'$gte':?1,'$lte':?2}}",fields="{ 'name' : 1, 'age' : 1}") 
public Page<Product> findByNameAndAgeRange(String name,double ageFrom,double ageTo,Pageable page);

 

分享到:
评论

相关推荐

    mongodb + spring3.1.1增删改查

    在本示例中,我们将探讨如何结合MongoDB和Spring 3.1.1进行数据操作,即增、删、改、查。 首先,集成MongoDB到Spring项目中,我们需要添加相应的依赖。在Spring 3.1.1时代,这通常意味着引入`spring-data-mongodb`...

    spring集成mongo所需jar

    1. **Spring Data MongoDB**:这是Spring Framework的一个子项目,它简化了MongoDB的集成,提供了一种声明式的方式来处理MongoDB的操作,如查询、增删改查等。其核心jar文件通常为`spring-data-mongodb-x.x.x....

    springboot集成mongodb增删改查功能源码

    在本文中,我们将深入探讨如何将Spring Boot框架与MongoDB数据库集成,以便实现全面的CRUD(创建、读取、更新、删除)功能。我们将以一个具体的实例——员工表为例,来阐述这一过程。 首先,我们需要理解Spring ...

    mongoDB springBoot(cloud)整合mongoDB(增删改查)

    在"mongoDB springBoot(cloud)整合mongoDB(增删改查)"项目中,我们可以看到以下几个关键知识点: 1. **Spring Data MongoDB**:这是 Spring 框架的一个模块,它为 MongoDB 提供了数据访问抽象层,包括 Repository ...

    java:mongodb的增删改查

    结合这三个技术,我们可以实现对MongoDB数据库的高效操作,包括增(添加数据)、删(删除数据)、改(修改数据)和查(查询数据)。以下是对这些知识点的详细说明: 1. **MongoDB**: - MongoDB是一个分布式文档型...

    JAVA操作MongoDB之spring整合

    在本文中,我们将深入探讨如何使用Java操作MongoDB并结合Spring框架进行整合。MongoDB是一个流行的NoSQL数据库,它以JSON...通过这样的整合,我们可以高效地使用Java操作MongoDB数据库,实现增删改查等各种业务需求。

    spring db & mongodb

    例如,我们可以使用`@Document`注解标记一个类作为MongoDB的文档模型,`@Id`注解定义主键,然后通过`MongoRepository`接口实现数据的增删改查。 在实际项目中,首先需要在Spring配置文件中添加MongoDB的相关配置,...

    SprinMVC对MongoDb进行增删改查的项目开发.zip

    在本项目中,我们主要探讨如何使用Spring MVC框架与MongoDB数据库进行集成,实现数据的增删查改(CRUD)操作。MongoDB是一个流行的NoSQL数据库系统,它以文档型数据模型为主,适合处理大量非结构化或半结构化的数据...

    Linux下安装MongoDB复制集+用户认证,与Spring集成操作

    5. **使用MongoTemplate**:在业务逻辑中,注入`MongoTemplate`,通过其提供的方法进行数据的增删改查操作。 以上就是Linux环境下MongoDB复制集的安装与用户认证,以及与Spring集成的操作步骤。这个过程中,需要...

    mongodb与springboot集成例子

    下面我们将详细讨论如何在 Spring Boot 中集成 MongoDB,并通过使用 `MongoTemplate` 进行数据的增删改查操作。 **1. 添加依赖** 首先,我们需要在项目中添加 MongoDB 和 Spring Data MongoDB 的依赖。如果你使用...

    使用Java基于MongoDB和SpringData应用.docx

    完成上述步骤后,你就可以在 Java 应用中通过 Spring Data 访问 MongoDB 数据库,进行数据的增删改查操作了。Spring Data 提供的抽象层使得开发者无需关心底层的数据库操作细节,可以更专注于业务逻辑,提高了开发...

    最新spring-data-mongo

    - `MongoDatabase`和`MongoCollection`:代表数据库和集合,提供了增删改查操作。 - `Document`:表示MongoDB中的文档,类似于JSON对象。 3. **Spring Data MongoDB** 在Spring Data MongoDB中,开发者可以定义...

    java spring+mongodb

    - **MongoTemplate**:这是Spring Data MongoDB的核心组件,它提供了操作MongoDB的API,如增删改查等基本操作。 - **Repository接口**:Spring Data MongoDB支持定义Repository接口,通过自动实现这些接口,可以...

    配置和实验springboot与第三方技术的集成 入springboot+mongodb.rar

    // 其他增删改查操作 } ``` 总之,这个压缩包文件中的代码示例将帮助你理解并实践如何在Spring Boot项目中配置和使用MongoDB。通过这样的集成,你可以享受到Spring Boot的便捷性和MongoDB的灵活性,为你的Web应用...

    springboot+mongodb

    然后,在 Controller 层,你可以创建 RESTful API 来处理 HTTP 请求,调用 Service 完成数据的增删改查。 6. **MongoTemplate**:如果你需要更底层的控制,可以使用 `MongoTemplate`。它提供了更灵活的 API 来执行...

    spring_mongodb.zip

    可以使用`MongoTemplate`进行增删改查操作: ```java @Autowired private MongoTemplate mongoTemplate; // 插入 public void createUser(User user) { mongoTemplate.insert(user); } // 查询 public User ...

    springmvc+mybatis+mongoDB

    在实际开发中,"mongo实现类"可能包含对MongoDB操作的具体实现,如数据的增删改查、索引创建、聚合查询等。这些类通常会被Spring管理并注入到需要使用MongoDB服务的其他组件中。 总的来说,"springmvc+mybatis+...

    jastar-wang-demo-springdata-mongo-master.zip

    启动后,可以通过访问特定URL测试MongoDB的增删改查功能。 总之,"jastar-wang-demo-springdata-mongo-master.zip"项目提供了一个直观的示例,帮助开发者快速理解和掌握Spring Data MongoDB的使用。通过对源代码的...

    11-Spring-Boot(十一):Spring boot中mongodb的使用.pdf

    创建一个DAO接口,例如`UserDao`,并实现其增删改查操作: ```java public interface UserDao { void saveUser(UserEntity user); UserEntity findByUserName(String userName); // 其他CRUD方法 } ``` ...

    mongodb数据库demo

    在这个“mongodb数据库demo”中,我们可以期待学习到MongoDB的基本操作和如何在实际项目中应用MongoDB,特别是与Spring框架集成的部分。 1. **MongoDB基本概念** - **文档(Document)**: MongoDB中的数据是以键值...

Global site tag (gtag.js) - Google Analytics