mongodb是最早热门非干系数据库的之一,利用也较量普遍,一般会用做离线数据阐明来利用,放到内网的居多。由于许多公司利用了云处事,处事器默认都开放了外网地点,导致前一阵子大批 MongoDB 因设置裂痕被进攻,数据被删,引起了人们的留意,感乐趣的可以看看这篇文章:场屠戮MongoDB的盛宴反思:超33000个数据库遭遇入侵打单,同时也说明白许多公司出产中大量利用mongodb。
mongodb简介
MongoDB(来自于英文单词“Humongous”,中文寄义为“复杂”)是可以应用于各类局限的企业、各个行业以及种种应用措施的开源数据库。基于漫衍式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高机能数据存储办理方案。MongoDB是一个高机能,开源,无模式的文档型数据库,是当前NoSQL数据库中较量热门的一种。
MongoDB是一个介于干系数据库和非干系数据库之间的产物,长短干系数据库傍边成果最富厚,最像干系数据库的。他支持的数据布局很是松散,是雷同json的bjson名目,因此可以存储较量巨大的数据范例。Mongo最大的特点是他支持的查询语言很是强大,其语法有点雷同于面向工具的查询语言,险些可以实现雷同干系数据库单表查询的绝大部门成果,并且还支持对数据成立索引。
传统的干系数据库一般由数据库(database)、表(table)、记录(record)三个条理观念构成,劳务派遣管理系统,MongoDB是由数据库(database)、荟萃(collection)、文档工具(document)三个条理构成。MongoDB对付干系型数据库里的表,可是荟萃中没有列、行和干系观念,这浮现了模式自由的特点。
MongoDB中的一笔记录就是一个文档,是一个数据布局,软件开发,由字段和值对构成。MongoDB文档与JSON工具雷同。字段的值有大概包罗其它文档、数组以及文档数组。MongoDB支持OS X、Linux及Windows等操纵系统,并提供了Python,PHP,Ruby,Java及C++语言的驱动措施,社区中也提供了对Erlang及.NET等平台的驱动措施。
MongoDB的适合对大量可能无牢靠名目标数据举办存储,好比:日志、缓存等。对事物支持较弱,不合用巨大的多文档(多表)的级联查询。文中演示mongodb版本为3.4。
mongodb的增删改查
Spring Boot对各类风行的数据源都举办了封装,虽然也包罗了mongodb,下面给各人先容如安在spring boot中利用mongodb:
1、pom包设置
pom包内里添加spring-boot-starter-data-mongodb包引用
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> </dependencies>
2、在application.properties中添加设置
spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test
多个IP集群可以回收以下设置:
spring.data.mongodb.uri=mongodb://user:pwd@ip1:port1,ip2:port2/database
3、建设数据实体
public class UserEntity implements Serializable { private static final long serialVersionUID = -3258839839160856613L; private Long id; private String userName; private String passWord; //getter、setter省略 }
4、建设实体dao的增删改查操纵
dao层实现了UserEntity工具的增删改查
@Component public class UserDaoImpl implements UserDao { @Autowired private MongoTemplate mongoTemplate; /** * 建设工具 * @param user */ @Override public void saveUser(UserEntity user) { mongoTemplate.save(user); } /** * 按照用户名查询工具 * @param userName * @return */ @Override public UserEntity findUserByUserName(String userName) { Query query=new Query(Criteria.where("userName").is(userName)); UserEntity user = mongoTemplate.findOne(query , UserEntity.class); return user; } /** * 更新工具 * @param user */ @Override public void updateUser(UserEntity 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,UserEntity.class); //更新查询返回功效集的所有 // mongoTemplate.updateMulti(query,update,UserEntity.class); } /** * 删除工具 * @param id */ @Override public void deleteUserById(Long id) { Query query=new Query(Criteria.where("id").is(id)); mongoTemplate.remove(query,UserEntity.class); } }