mongoDb入门并整合spring boot

举报
小鲍侃java 发表于 2021/10/24 09:56:23 2021/10/24
【摘要】 1.MongoDb简介MongoDb是一种非关系型数据库,是现在非常火热的noSQL。也被称为文档性数据库。(可存放json,xml等格式)mongodb与mysql命令对比 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层...

1.MongoDb简介

  1. MongoDb是一种非关系型数据库,是现在非常火热的noSQL。也被称为文档性数据库。(可存放json,xml等格式)
  2. mongodb与mysql命令对比 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,
  3. MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。(存储xml,json等)
  4. MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。
  5. 一条MongoDB就是一个类似json数据结构。

特点:

  1. 存储方式:虚拟内存+持久化。(数据存储在磁盘,但是充分利用了缓存,常用的数据放于内存)
  2. 不使用固定的sql进行操作。(有固定语法)

1.MongoDb的优点

  1. 高速。
  2. 支持json。(可存放复杂数据)
  3. 可扩展分片集群。

2.MongoDb的缺点

  1. 事务关系支持薄弱。
  2. 稳定性不足。
  3. 运维难。
  4. 不支持对表关联查询。
  5. 在指定id之后插入会比较慢。

3.使用场景

  1. 对大量无固定格式的数据存储,如日志等。(充分的使用了内存)
  2. 需要高性能。
  3. 扩展集群。

2.MongoDb的curd语法

1.安装

首先需要安装,可以按照这位老哥的来安装 https://www.cnblogs.com/RushPasser/p/b060ea88677ab73fce01300d19676158.html。亲试贼专业。

2.操作命令

进入C:\Program Files\MongoDB\Server\3.4\bin,双击mongo.exe。

show dbs  --查看数据库,假设我们有一个叫test的数据库
use test 使用test数据库

1.插入语法

db.message.save({'name':'xiaobao','age':27,'class':'1-1'})  --插入message的信息。里面为json。
db.message.save({'name':'xiaobao2','age':28,'class':'2-1'})
db.message.save({'name':'xiaobao3','age':29,'class':'3-1'})

2.查询语法

db.message.find()    --查询message
db.message.find().pretty()  --格式化在查询
db.message.find()  .limit(1)  --查询一条
db.message.find({"age":{"$gte":10}}) --查询age大于10的数据
db.message.find({"age":{"$lte":10}}) --查询age小于10的数据
db.message.find().sort({"age":1})  --正排序
db.message.find().sort({"age":1})  --负排序
db.message.count() --查询条数

3.修改语法

db.message.update({"name":"xiaobao"},{$set:{"name":"xiaowang"}}) 
db.message.update({"name":"xiaowang"},{"name":"laoli"})  --修改name 为laoli 其余值删除
db.message.update({"name":"xiaobao2"},{$set:{"name":"xiaowang"}},{upsert:true})   --如果没有 增加一条
db.message.update({"name":"xiaowang"},{$set:{"name":"xiaowang"}},{multi:true})    --修改所有数据

4.删除语法

db.message.remove()  --删除所有
db.message.remove({'class':'1-1'}) --删除class = 1-1的那条

3.整合spring boot

在application.properties加入mongoDb链接。

spring.data.mongodb.uri=mongodb://192.168.2.81:27017/test

然后使用MongoTemplate 来操作数据库,MongoTemplate 和常用的RedisTemplate差不多,都是封装了mongoDb方法的客户端。

    @Autowired
	private MongoTemplate mongotemplate;
   //增加
    @RequestMapping(path = "/savemongo", method = RequestMethod.POST)
	@ResponseBody
	public void savecCity(@RequestBody City city) {
		mongotemplate.save(city);//通过一个类类型向数据库中插入json
	}
	
    //查询
	@RequestMapping("/selmongo")
	@ResponseBody
	public City select(@RequestParam int id) {
		Query query = new Query(Criteria.where("id").is(id));  //查询id为传入参数
		City user = mongotemplate.findOne(query, City.class);
		return user;
	}
	
    //删除
	@RequestMapping("/delmogo")
	@ResponseBody
	public void del(@RequestParam int id) {
		Query query = new Query(Criteria.where("id").is(id));  //个人理解此行为查询条件,然后在下面查找出在删除。
		mongotemplate.remove(query, City.class);
	}
	
     //修改
	@RequestMapping(path = "/updamogo", method = RequestMethod.POST)
	@ResponseBody
	public void updateMongo(@RequestBody City city) {
		Query query = new Query(Criteria.where("id").is(city.getId()));
		Update update = new Update().set("provinceId", city.getProvinceId()).set("cityName", city.getCityName());
		mongotemplate.updateFirst(query, update, City.class);
	}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。