MongoDB数据库简介

简介

MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自“humongous”,是一种开源的文档数据库──NoSql数据库的一种。NoSql,全称是 Not Only Sql,指的是非关系型的数据库。

特点

MongoDB数据库的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

* 面向集合存储,易存储对象类型的数据。

* 模式自由。

* 支持动态查询。

* 支持完全索引,包含内部对象。

* 支持查询。

* 支持复制和故障恢复。

* 使用高效的二进制数据存储,包括大型对象(如视频等)。

* 自动处理碎片,以支持云计算层次的扩展性

* 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。

* 文件存储格式为BSON(一种JSON的扩展)

* 可通过网络访问

MongoDB是一个开源的NoSQL文档数据库,它使用一个JSON格式的模式(schema)替换了传统的基于表的关系数据。Spring Boot为使用MongoDB提供了很多便利,包括spring-boot-starter-data-mongodb 'Starter POM'。

引入spring-boot-starter-data-mongodb包,在pom.xml配置文件中增加如下内容(基于之前章节“Spring Boot 构建框架”中的pom.xml文件):

org.springframework.boot

spring-boot-starter-data-mongodb

注入一个自动配置的org.springframework.data.mongodb.MongoDbFactory来访问Mongo数据库。默认情况下,该实例将尝试使用URL: mongodb://localhost/test连接一个MongoDB服务器。

import org.springframework.data.mongodb.MongoDbFactory;

import com.mongodb.DB;

@Component

public class MyBean {

private final MongoDbFactory mongo;

@Autowired

public MyBean(MongoDbFactory mongo) {

this.mongo = mongo;

}

// ...

public void example() {

DB db = mongo.getDb();

// ...

}

}

可以通过设置spring.data.mongodb.uri来改变该url,或指定一个host/port。在application.properties中设置如下的属性:

spring.data.mongodb.host=mongoserver

spring.data.mongodb.port=27017

注意:如果没有指定spring.data.mongodb.port,那将使用默认的端口27017。可以简单的从上面的示例中删除这一行。如果不使用Spring Data Mongo,可以注入com.mongodb.Mongo beans而不是使用MongoDbFactory。如果想全面控制MongoDB连接的建立,也可以声明自己的MongoDbFactory或Mongo,@Beans。

MongoDBTemplate

Spring Data Mongo提供了一个MongoTemplate类,它的设计和Spring的JdbcTemplate很相似。正如JdbcTemplate一样,Spring Boot会自动配置一个bean,你只需简单的注入它即可:

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.mongodb.core.MongoTemplate;

import org.springframework.stereotype.Component;

@Component

public class MyBean {

private final MongoTemplate mongoTemplate;

@Autowired

public MyBean(MongoTemplate mongoTemplate) {

this.mongoTemplate = mongoTemplate;

}

// ...

}

应用集成MongoDB案例

在application.properties配置文件中添加内容如下:

spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test

多个IP集群采用以下配置:

spring.data.mongodb.uri=mongodb://user:pass@ip1:port1,ip2:port2/database

创建数据实体类,具体代码如下:

public class UserInfo implements Serializable {

private Long id;

private String userName;

private String passWord;

//getter、setter省略

}

创建实体类对应dao层,实现增删改查操作,具体代码如下:

@Component

public class UserInfoDaoImpl implements UserInfoDao {// UserInfoDao 自定义接口

@Autowired

private MongoTemplate mongoTemplate;

/**

* 创建对象

* @param user

*/

@Override

public void saveUser(UserInfo user) {

mongoTemplate.save(user);

}

/**

* 根据用户名查询对象

* @param userName

* @return

*/

@Override

public UserInfo findUserByUserName(String userName) {

Query query=new Query(Criteria.where("userName").is(userName));

UserInfo user = mongoTemplate.findOne(query , UserInfo.class);

return user;

}

/**

* 更新对象

* @param user

*/

@Override

public void updateUser(UserInfo user) {

Query query=new Query(Criteria.where("id").is(user.getId()));

Update update= new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord());

//更新查询返回结果集的第一条

mongoTemplate.updateFirst(query,update,UserInfo.class);

//更新查询返回结果集的所有

// mongoTemplate.updateMulti(query,update,UserInfo.class);

}

/**

* 删除对象

* @param id

*/

@Override

public void deleteUserById(Long id) {

Query query=new Query(Criteria.where("id").is(id));

mongoTemplate.remove(query,UserInfo.class);

}

}

简单测试方法,具体代码如下:

@RunWith(SpringRunner.class)

@SpringBootTest

public class UserDaoTest {

@Autowired

private UserDao userDao;

@Test

public void testSaveUser() throws Exception {

UserInfo user=new UserInfo();

user.setId(2);

user.setUserName("路人甲");

user.setPassWord("123456");

userDao.saveUser(user);

}

@Test

public void findUserByUserName(){

UserInfo user= userDao.findUserByUserName("路人甲");

System.out.println("user is "+user);

}

@Test

public void updateUser(){

UserInfo user=new UserInfo();

user.setId(3);

user.setUserName("路人乙");

user.setPassWord("123456");

userDao.updateUser(user);

}

@Test

public void deleteUserById(){

userDao.deleteUserById(3);

}

}

登录MongoDB验证数据

使用mongoVUE工具来连接后直接图形化查看或登录服务器用命令来查看登录mongodb服务端,执行命令bin/mongo -host localhost -port 27017,切换至test库执行use test命令,查询userInfo集合数据,执行db.userInfo.find()查询数据。

总结

以上所述是小编给大家介绍的Spring Boot中使用MongoDB数据库的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

spring mysql mongdb_Spring Boot中使用MongoDB数据库的方法相关推荐

  1. Spring Boot中使用MongoDB数据库

    MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有 ...

  2. mongodb 事务_Spring Boot中使用MongoDB数据库

    MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有 ...

  3. Spring Boot 中使用 MongoDB 增删改查

    本文快速入门,MongoDB 结合SpringBoot starter-data-mongodb 进行增删改查 1.什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件 ...

  4. Spring Boot中使用PostgreSQL数据库

    在如今的关系型数据库中,有两个开源产品是你必须知道的.其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的.而今天 ...

  5. Spring Boot中使用MongoDB,使用 Repository以及使用MongoTemplate

    文章目录 Spring Boot中使用MongoDB MongoDB Repository使用实例 导入依赖 配置MongoDB 定义Model 定义Repository 进行使用 MongoTemp ...

  6. MongoDB数据库(8.Python中使用mongodb数据库以及pymongo模块用法)

    在Python中使用MongoDB数据库,首先要下载pymongo模块 直接在命令行   pip install pymongo   就可以了 Python中使用pymongo模块对MongoDB数据 ...

  7. python读取sqlserver的数据_Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例...

    本文实例讲述了Python实现读取SQLServer数据并插入到MongoDB数据库的方法.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pyodbc ...

  8. python批量读取图片并批量保存_Python实现批量读取图片并存入mongodb数据库的方法示例...

    本文实例讲述了Python实现批量读取图片并存入mongodb数据库的方法.分享给大家供大家参考,具体如下: 我的图片放在E:\image\中,然后使用python将图片读取然后,显示一张,存入取一张 ...

  9. tp5连接mongo和mysql_tp5(thinkPHP5)操作mongoDB数据库的方法

    本文实例讲述了tp5(thinkPHP5)操作mongoDB数据库的方法.分享给大家供大家参考,具体如下: 1.通过composer安装 composer require mongodb/mongod ...

最新文章

  1. 使用Microsoft Azure Backup备份Hyper-V数据
  2. python元组类型_Python数据类型之元组
  3. 总结————AJAX应用的五个步骤:
  4. POJ1993+矩阵相乘
  5. mysql实现阻塞队列_阻塞队列--LinkedBlockingQueue
  6. BZOJ3123[Sdoi2013]森林——主席树+LCA+启发式合并
  7. [leetcode] 题型整理之动态规划
  8. FreeMarker合并单元格
  9. C++_二维数组的动态申请内存3种方法
  10. javascript拖拽之从浏览器外拖拽(drag)
  11. Web2.0浪潮下的广播电视业
  12. 李彦宏“泼水门”:舆论的狂欢,还是魏则西的葬歌?
  13. R语言保存png,pdf文件出现文件损坏或空白问题的解决方案
  14. 关于Linux的rear命令
  15. 微信小程序后台销毁时间 演变和总结(热启动时间限制)
  16. Python-----函数详解(上篇)(附小项目实战)
  17. 产学交流 | 重庆师范大学计算机学院、湖北省十堰市竹溪管委会各位专家到访芝诺数据...
  18. 无线传感器网络节点连通率
  19. ildasm + ilasm + ilmerge 小试牛刀
  20. matlab网络通讯消息响应,nevoVI FIRE——实现PC与CAN和LIN网络通信

热门文章

  1. Docker学习(3)——安装部署过程及简单应用
  2. LNMP架构——OpenResty实现缓存前移(到达Nginx前端层面)
  3. Python零基础入门(4)——强大的分支与循环
  4. 华为服务器系统激活id怎么更改,服务器id怎么设置
  5. python打包发布到手机_Python打包操作与在线发布
  6. python制作神经网络_python_deeplearning02_使用python制作神经网络
  7. gtx1080 驱动 linux,CentOS 7安装Nvidia GTX1080显卡驱动
  8. 迷宫搜索问题最短路_[源码和文档分享]基于C语言实现的勇闯迷宫游戏
  9. 哪一类功率放大电路效率最高_最简单逆变器电路讲解计算,电工电子动手学技术,电路好案例推荐...
  10. 分布式熔断降级平台aegis