`

MongoDB的spring整合使用

 
阅读更多

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;  
} 
 
0
0
分享到:
评论

相关推荐

    MongoDB spring hibernate java 集成demo

    MongoDB spring hibernate java 集成demo

    JAVA操作MongoDB之spring整合

    总结来说,"JAVA操作MongoDB之spring整合"涉及到的主要知识点包括:Spring Boot项目结构,MongoDB的配置和连接,Spring Data MongoDB的MongoRepository接口,以及如何在Controller层处理HTTP请求。通过这样的整合,...

    spring 整合mongodb

    总结,Spring整合MongoDB提供了强大的数据访问支持,通过简单的接口和注解,可以让开发者专注于业务逻辑,而不是底层数据库操作。在实际开发中,了解并熟练运用这些知识点,能显著提升开发效率和代码质量。

    mongodb整合spring文档

    - `mongo-java-driver`的版本选择上,请确保其兼容性,特别是当使用较新的`spring-data-mongodb`版本时,可能需要调整`mongo-java-driver`的版本。 - `spring-data-mongodb`提供了丰富的API用于操作MongoDB数据库,...

    MongoDB整合Spring

    将MongoDB与Spring整合,可以充分利用Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)特性,以及MongoDB的文档型数据存储优势,实现高效、灵活的数据管理。...

    mongodb&spring&struts&springdatamongodb整合,带所有jar,需要的拿走

    MongoDB、Spring、Struts和Spring Data MongoDB...总的来说,这个整合项目为开发者提供了一个学习和实践MongoDB、Spring、Struts以及Spring Data MongoDB集成的良好起点,有助于理解和掌握这些技术在实际开发中的应用。

    mongodb-spring 整合包

    当我们将MongoDB与Spring整合时,可以利用Spring的强大功能来简化MongoDB的使用,提高开发效率。本整合包正是针对这一需求而准备的,它包含了实现MongoDB与Spring集成所需的所有组件。 首先,我们需要了解MongoDB-...

    Spring Data MongoDB中文文档

    - 这些特性极大地丰富了与 MongoDB 交互的方式,使得 **Spring Data MongoDB** 成为了与 MongoDB 集成的理想选择。 总之,**Spring Data MongoDB** 是一个强大的工具,它不仅简化了与 MongoDB 数据库的交互,还提供...

    MongoDB与Spring整合

    当我们将MongoDB与Spring整合时,可以充分利用Spring的依赖注入和数据访问抽象,简化MongoDB在Java应用中的使用。 首先,整合MongoDB与Spring的关键在于Spring Data MongoDB模块,它提供了对MongoDB的数据访问支持...

    Spring-Mongodb例子

    总的来说,Spring和MongoDB的结合提供了一个高效、灵活且易于使用的数据存储解决方案,适用于那些需要处理大量非结构化数据或半结构化数据的应用程序。学习和掌握这一组合,将有助于提升开发者在现代Web开发中的技能...

    源码-spring+MongoDB的整合

    当我们需要将Spring与MongoDB整合时,目的是利用Spring的优秀管理和组织能力来操作MongoDB的数据存储。 首先,我们要了解Spring Data MongoDB项目,这是Spring框架对MongoDB支持的一部分。Spring Data MongoDB提供...

    Spring-Data-MongoDB3.2

    **Spring Data MongoDB 3.2 整合指南** 在当今的软件开发中,Spring框架以其强大的功能和灵活性深受开发者喜爱,而MongoDB作为一款非关系型数据库,因其高性能、高可扩展性和灵活的数据模型,成为了大数据和实时...

    MongoDB复制集及与Spring集成操作

    本文将详细介绍如何在Linux环境下设置MongoDB复制集,同时涵盖用户认证的配置以及MongoDB与Spring框架的集成。 首先,让我们了解MongoDB复制集。复制集是MongoDB中的一组MongoDB实例,它们之间保持着数据同步。当主...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    总结来说,Spring Data MongoDB通过`MongoDBTemplate`简化了MongoDB的集成和操作,使得开发者能够专注于业务逻辑而不是底层数据库交互。对于初学者,这是一个很好的起点,可以快速上手MongoDB和Spring Data的使用。

    Spring集成Mongodb配置含jar包

    12. **性能优化**: 了解MongoDB的性能调优策略,如正确设计数据模型、使用合适的数据类型、创建合适的索引、调整硬件资源等,对于提升Spring集成MongoDB应用的性能至关重要。 综上所述,Spring集成MongoDB提供了...

    Spring+MongoDB整合 项目

    【Spring+MongoDB整合项目详解】 在现代软件开发中,Spring框架和MongoDB数据库的结合是常见的技术选型,尤其适用于需要快速开发、高可扩展性的应用。本项目结合了Spring框架的灵活性与MongoDB的非关系型数据处理...

    Spring3.1 MongoDB整合实例(含jar包)已测

    本文将深入探讨如何在Spring 3.1版本中整合MongoDB,以及提供的jar包资源。 首先,Spring 3.1对MongoDB的支持主要体现在Spring Data MongoDB项目中,它提供了一套完整的抽象层,简化了与MongoDB的交互。Spring Data...

    mongodb整合spring、hibernate、mysql

    在这个项目中,“mongodb整合spring、hibernate、mysql”意味着开发者将MongoDB作为NoSQL数据库,Spring作为应用的管理和数据访问层,而Hibernate则用于处理MySQL的关系型数据库操作。这样的集成允许应用同时利用两...

    spring mongodb 中文文档

    MongoDB 是一个高性能、开源、无模式的分布式文档数据库,而Spring Data MongoDB 是Spring 框架的一部分,它为MongoDB 提供了强大的支持,简化了与MongoDB 的集成和操作。这篇文档将深入探讨Spring Data MongoDB 的...

Global site tag (gtag.js) - Google Analytics