MongoDB的基本使用

发布时间:2024年01月01日

MongoDB的引出

使用Redis技术可以有效的提高数据访问速度,但是由于Redis的数据格式单一性,无法操作结构化数据,当操作对象型的数据时,Redis就显得捉襟见肘。在保障访问速度的情况下,如果想操作结构化数据,看来Redis无法满足要求了,此时需要使用全新的数据存储结束来解决此问题,即MongoDB技术。

MongoDB简介

  1. MongoDB是一个开源、高性能、无模式文档型数据库,它是NoSQL数据库产品中的一种,是最像关系型数据库的非关系型数据库。

    • 无模式:简单说就是作为一款数据库,没有固定的数据存储结构,第一条数据可能有A、B、C一共3个字段,第二条数据可能有D、E、F也是3个字段,第三条数据可能是A、C、E3个字段,也就是说数据的结构不固定,这就是无模式
  2. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    • bson:是一种计算机数据交换格式,主要被用作MongoDB数据库中的数据存储和网络传输格式。它是一种二进制表示形式,能用来表示简单数据结构、关联数组(MongoDB中称为“对象”或“文档”)以及MongoDB中的各种数据类型。BSON之名缘于JSON,含义为Binary JSON(二进制JSON)

MongoDB常见应用场景

  1. MongoDB一般都会和数据库结合使用,永久性存储与临时存储相结合,适用于修改次数较多的数据使用。
    • 游戏装备数据、游戏道具数据
      • 存储位置:数据库、Mongodb
      • 特征:永久性存储与临时存储相结合、修改频度较高
    • 直播数据、打赏数据、粉丝数据
      • 存储位置:数据库、Mongodb
      • 特征:永久性存储与临时存储相结合,修改频度极高
    • 物联网数据
      • 存储位置:Mongodb
      • 特征:临时存储,修改频度飞速

MongoDB的下载

  1. windows版安装包下载地址:https://www.mongodb.com/try/download

    • 下载的安装包也有两种形式,一种是一键安装的msi文件,还有一种是解压缩就能使用的zip文件,哪种形式都行
  2. zip解压:

      1. 把压缩文件放置一个目录下,然后解压缩完毕后会得到如下文件,其中bin目录包含了所有mongodb的可执行命令
        在这里插入图片描述
      1. mongodb在运行时需要指定一个数据存储的目录,所以创建一个数据存储目录,通常放置在安装目录中,此处创建data的目录用来存储数据,然后在data目录里面再创建一个db目录,用来存储mongodb运行时产生(呈现)的数据文件。具体如下:
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
      1. 启动服务器:进入bin目录里面,然后在该目录下输入cmd进入命令行,然后执行下面的命令。
mongod --dbpath=..\data\db

在这里插入图片描述
在这里插入图片描述
启动服务器时需要指定数据存储位置,通过参数–dbpath进行设置,可以根据需要自行设置数据存储路径。默认服务端口27017。

***然后启动客户端:***进入bin目录里面,然后在该目录下输入cmd进入命令行,然后执行下面的命令,就可以操作mongo数据库了。

mongo --host=127.0.0.1 --port=27017

--host 和--port都是默认的数据。

在这里插入图片描述

  1. MongoDB虽然是一款数据库,但是它的操作并不是使用SQL语句进行的,因此操作方式比较陌生,为此我们一般使用一些类似于Navicat的数据库客户端软件,能够便捷的操作MongoDB,先安装一个客户端,再来操作MongoDB。
    • 这里介绍使用Robot3t,Robot3t是一款绿色软件,无需安装,解压缩即可。解压缩完毕后进入安装目录双击robot3t.exe即可使用。
      在这里插入图片描述
      注意,使用mongodb客户端软件之前,记得启动mongodb服务器。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      创建数据库:在左侧菜单中使用右键创建,输入数据库名称即可
      在这里插入图片描述
      在这里插入图片描述
      创建集合:在Collections上使用右键创建,输入集合名称即可,集合等同于数据库中的表的作用
      在这里插入图片描述
      在这里插入图片描述

mongodb数据库操作

显示所有的数据库:show dbs、show databases
显示当前所在的数据库:db
选择和创建数据库:use 数据库名称
删除当前数据库:db.dropDatabase()

mongodb集合操作

  1. 新增集合:

    • 显示新增:db.createCollection(name)
    • 隐式新增:通过插入文档数据来默认创建,db.collection.insert({id:1,name:knife});
  2. 显示数据库中所有的集合:show tables、show collections

  3. 删除当前集合:db.collection.drop()

    • 清空一个集合(效率低,直接删集合更快):db.collection.remove({})

mongodb文档操作(文档是一种类似json格式的数据,初学者可以先把数据理解为就是json数据)

  1. 新增文档:
新增一个文档:
	db.集合名称.insert/save/insertOne(文档) ;   => 单文档插入
	db.collection.insertMany(文档):  =>多文档插入
	db.collection.insert(文档):   =>单、多文档插入
	
例子:db.collection.insert({k1:v1,k2:v2, ......})
db.knife.insertOne({id:1,name:"jack",city:"广州",age:20})
	集合名称:knife
	文档:{id:1,name:"jack",city:"广州",age:20}


在这里插入图片描述

  1. 删除文档:
db.集合名称.remove(条件)

例子:deleteOne删除id=2的文档
db.knife.deleteOne({id:2})
  1. 修改文档:
db.集合名称.update(条件,{操作种类:{文档}})
  1. 查询文档:
基础查询:
	查询全部:		   db.集合.find();
	查第一条:		   db.集合.findOne()
	查询指定数量文档:	db.集合.find().limit(10)					//查10条文档
	跳过指定数量文档:	db.集合.find().skip(20)					//跳过20条文档
	统计:			  	db.集合.count()
	排序:				db.集合.sort({age:1})						//按age升序排序
	投影:				db.集合名称.find(条件,{name:1,age:1})		 //仅保留name与age域





条件查询:
	基本格式:			db.集合.find({条件})
	模糊查询:			db.集合.find({域名:/正则表达式/})		  //等同SQL中的like,比like强大,可以执行正则所有规则
	条件比较运算:		   db.集合.find({域名:{$gt:值}})				//等同SQL中的数值比较操作,例如:name>18
	包含查询:			db.集合.find({域名:{$in:[值1,值2]}})		//等同于SQL中的in
	条件连接查询:		   db.集合.find({$and:[{条件1},{条件2}]})	   //等同于SQL中的and、or

springboot整合mongodb

  1. 使用springboot整合MongDB该如何进行呢?其实springboot为什么使用的开发者这么多,就是因为他的套路几乎完全一样。导入坐标,做配置,使用API接口操作。整合Redis如此,整合MongoDB同样如此。(熟悉的的三板斧)
    • 第一,先导入对应技术的整合starter坐标
    • 第二,配置必要信息
    • 第三,使用提供的API(接口啊,类啊等等的)操作即可

?下面就开始springboot整合MongoDB,操作步骤如下:
步骤①:导入springboot整合MongoDB的starter坐标

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

上述坐标也可以在创建模块的时候通过勾选的形式进行选择,同样归属NoSQL分类中
在这里插入图片描述
步骤②:进行基础配置

spring:
  data:
    mongodb:
      uri: mongodb://localhost/knife
# localhost是本机地址,然后后面的knife是数据库名称
# 如果这里配置的数据库名称是不存在的,那么它在使用的时候,会默认帮你创建这个数据库。

?操作MongoDB需要的配置与操作redis一样,最基本的信息都是操作哪一台服务器,区别就是连接的服务器IP地址和端口不同,书写格式不同而已。

步骤③:使用springboot整合MongoDB的专用客户端接口MongoTemplate来进行操作(这里只是调用MongoTemplate两个比较简单的方法)

@SpringBootTest
class SpringbootMongodbApplicationTests {
    @Autowired
    private MongoTemplate mongoTemplate;
    @Test
    void contextLoads() {
        Book book = new Book();
        book.setId(2);
        book.setName("springboot2");
        book.setType("springboot2");
        book.setDescription("springboot2");
//向数据里面添加一个文档(可以理解为mysql里面添加一条数据)
        mongoTemplate.save(book);
    }
    @Test
    void find(){
    //查询方法
        List<Book> all = mongoTemplate.findAll(Book.class);
        System.out.println(all);
    }
}
文章来源:https://blog.csdn.net/weixin_64044840/article/details/135233795
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。