1、首先,引入包,
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.10.7.RELEASE</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.4.3</version> </dependency>
2、配置,可查看官方文档:
mongodb.host=127.0.0.1 mongodb.port=27017 mongodb.databaseName=testliu mongodb.username=liu mongodb.password=123 mongodb.connectionsPerHost=8 mongodb.threadsAllowedToBlockForConnectionMultiplier=4 mongodb.connectTimeout=1000 mongodb.maxWaitTime=1500 mongodb.autoConnectRetry=true mongodb.socketKeepAlive=true mongodb.socketTimeout=1500 mongodb.slaveOk=true mongodb.writeNumber=1 mongodb.riteTimeout=0 mongodb.writeFsync=true
<mongo:db-factory id="mongoDbFactory" host="${mongodb.host}" port="${mongodb.port}" dbname="${mongodb.databaseName}" username="${mongodb.username}" password="${mongodb.password}"/> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> </bean>
3、写单元测试:
@Before public void testBefore() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-mongodb.xml"); mongoTemplate = (MongoTemplate) context.getBean("mongoTemplate"); } @Test public void testAdd() { UserVo user = new UserVo(16,"liu"); mongoTemplate.save(user); }
4、遇到问题,MongoDB默认是没有鉴权,所以任意访问,而spring连接时会报错误,这个时候,只需要新建一个用户名+密码,分配读写权限即可,我的客户端用的mongochef,比较简单。
org.springframework.dao.DataAccessResourceFailureException: Timed out after 30000 ms while waiting for a server that matches WritableServerSelector. Client view of cluster state is {type=UNKNOWN, servers=[{address=127.0.0.1:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=null, userName='', source='testliu', password=<hidden>, mechanismProperties={}}}, caused by {com.mongodb.MongoCommandException: Command failed with error 18: 'Authentication failed.' on server 127.0.0.1:27017. The full response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }}}]; nested exception is com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches WritableServerSelector. Client view of cluster state is {type=UNKNOWN, servers=[{address=127.0.0.1:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=null, userName='', source='testliu', password=<hidden>, mechanismProperties={}}}, caused by {com.mongodb.MongoCommandException: Command failed with error 18: 'Authentication failed.' on server 127.0.0.1:27017. The full response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" }}}] at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:77) at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2146) at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:484) at org.springframework.data.mongodb.core.MongoTemplate.saveDBObject(MongoTemplate.java:1104) at org.springframework.data.mongodb.core.MongoTemplate.doSave(MongoTemplate.java:1037) at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:984) at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:972) at com.test.MongoSpringTest.testAdd(MongoSpringTest.java:47) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498)
拓展:
1)查询时,一般使用Query和Criteria对象,聚合使用Aggregation(),
Aggregation aggregation = Aggregation.newAggregation( Aggregation.match(criteria), Aggregation.group(Fields.field("userId", "_id.userId"))).sum("num").as("sum").sum("mNum").as("mSum")...)2、使用map-reduce分析数据时,分为几方面,
Query query = new Query(); query.addCriteria(Criteria.where("userId").is(1)); //mapReduceOptions定义了分析后的数据,存储的表位置 MapReduceOptions mapReduceOptions = new MapReduceOptions().outputTypeMerge().outputCollection(tableName).finalizeFunction("classpath:finalize.js"); mongoTemplate.mapReduce(query, CollectionName.ORDER, "classpath:map.js", "classpath:reduce.js", mapReduceOptions, entityClass);其中map定义的分组的方式,reduce定义了如何处理数据。
官方教程(按用户名分组,累计每个用户的记录): >db.posts.mapReduce( function() { emit(this.user_name,1); }, function(key, values) {return Array.sum(values)}, { query:{status:"active"}, out:"post_total" } ).find()
map.js function(){ emit({ user_name: this.user_name, user_Id: this.user_Id, }, { count: this.count, ip: this.ip, money: this.money, }) } reduce.js function(key, values){ reduced = {totalCount:0,ip:'',totalMoney:0}; values.forEach(function (val) { reduced.ip= val.ip; reduced.totalCount += val.count; reduced.totalMoney += val.money; }); return reduced; }
相关推荐
MongoDB spring hibernate java 集成demo
总结来说,"JAVA操作MongoDB之spring整合"涉及到的主要知识点包括:Spring Boot项目结构,MongoDB的配置和连接,Spring Data MongoDB的MongoRepository接口,以及如何在Controller层处理HTTP请求。通过这样的整合,...
总结,Spring整合MongoDB提供了强大的数据访问支持,通过简单的接口和注解,可以让开发者专注于业务逻辑,而不是底层数据库操作。在实际开发中,了解并熟练运用这些知识点,能显著提升开发效率和代码质量。
- `mongo-java-driver`的版本选择上,请确保其兼容性,特别是当使用较新的`spring-data-mongodb`版本时,可能需要调整`mongo-java-driver`的版本。 - `spring-data-mongodb`提供了丰富的API用于操作MongoDB数据库,...
将MongoDB与Spring整合,可以充分利用Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)特性,以及MongoDB的文档型数据存储优势,实现高效、灵活的数据管理。...
MongoDB、Spring、Struts和Spring Data MongoDB...总的来说,这个整合项目为开发者提供了一个学习和实践MongoDB、Spring、Struts以及Spring Data MongoDB集成的良好起点,有助于理解和掌握这些技术在实际开发中的应用。
当我们将MongoDB与Spring整合时,可以利用Spring的强大功能来简化MongoDB的使用,提高开发效率。本整合包正是针对这一需求而准备的,它包含了实现MongoDB与Spring集成所需的所有组件。 首先,我们需要了解MongoDB-...
当我们将MongoDB与Spring整合时,可以充分利用Spring的依赖注入和数据访问抽象,简化MongoDB在Java应用中的使用。 首先,整合MongoDB与Spring的关键在于Spring Data MongoDB模块,它提供了对MongoDB的数据访问支持...
总的来说,Spring和MongoDB的结合提供了一个高效、灵活且易于使用的数据存储解决方案,适用于那些需要处理大量非结构化数据或半结构化数据的应用程序。学习和掌握这一组合,将有助于提升开发者在现代Web开发中的技能...
当我们需要将Spring与MongoDB整合时,目的是利用Spring的优秀管理和组织能力来操作MongoDB的数据存储。 首先,我们要了解Spring Data MongoDB项目,这是Spring框架对MongoDB支持的一部分。Spring Data MongoDB提供...
**Spring Data MongoDB 3.2 整合指南** 在当今的软件开发中,Spring框架以其强大的功能和灵活性深受开发者喜爱,而MongoDB作为一款非关系型数据库,因其高性能、高可扩展性和灵活的数据模型,成为了大数据和实时...
- 这些特性极大地丰富了与 MongoDB 交互的方式,使得 **Spring Data MongoDB** 成为了与 MongoDB 集成的理想选择。 总之,**Spring Data MongoDB** 是一个强大的工具,它不仅简化了与 MongoDB 数据库的交互,还提供...
本文将详细介绍如何在Linux环境下设置MongoDB复制集,同时涵盖用户认证的配置以及MongoDB与Spring框架的集成。 首先,让我们了解MongoDB复制集。复制集是MongoDB中的一组MongoDB实例,它们之间保持着数据同步。当主...
总结来说,Spring Data MongoDB通过`MongoDBTemplate`简化了MongoDB的集成和操作,使得开发者能够专注于业务逻辑而不是底层数据库交互。对于初学者,这是一个很好的起点,可以快速上手MongoDB和Spring Data的使用。
12. **性能优化**: 了解MongoDB的性能调优策略,如正确设计数据模型、使用合适的数据类型、创建合适的索引、调整硬件资源等,对于提升Spring集成MongoDB应用的性能至关重要。 综上所述,Spring集成MongoDB提供了...
【Spring+MongoDB整合项目详解】 在现代软件开发中,Spring框架和MongoDB数据库的结合是常见的技术选型,尤其适用于需要快速开发、高可扩展性的应用。本项目结合了Spring框架的灵活性与MongoDB的非关系型数据处理...
本文将深入探讨如何在Spring 3.1版本中整合MongoDB,以及提供的jar包资源。 首先,Spring 3.1对MongoDB的支持主要体现在Spring Data MongoDB项目中,它提供了一套完整的抽象层,简化了与MongoDB的交互。Spring Data...
在这个项目中,“mongodb整合spring、hibernate、mysql”意味着开发者将MongoDB作为NoSQL数据库,Spring作为应用的管理和数据访问层,而Hibernate则用于处理MySQL的关系型数据库操作。这样的集成允许应用同时利用两...
MongoDB 是一个高性能、开源、无模式的分布式文档数据库,而Spring Data MongoDB 是Spring 框架的一部分,它为MongoDB 提供了强大的支持,简化了与MongoDB 的集成和操作。这篇文档将深入探讨Spring Data MongoDB 的...