MongoDb安装和使用

MongoDB 概述

  • Mongo是一个基于分布式文件存储的Nosql数据库。Nosql数据库还包含redis、hbase等。它以 BSON(Binary JSON)格式存储数据。它提供了高性能、可扩展性和高可用性,是处理大规模数据和快速变化的应用场景的理想选择。MongoDB 的文档模型灵活,允许嵌套的数据结构,支持复杂的查询和聚合操作。

MongoDB 业务场景

  • 社交场景, 使用 MongoDB 存储存储用户信息, 以及用户发表的朋友圈信息, 通过地理位置索引实现附近的人, 地点等功能。
  • 游戏场景, 使用 MongoDB 存储游戏用户信息, 用户的装备, 积分等直接以内嵌文档的形式存储, 方便查询, 高效率存储和访问。
  • 物流场景, 使用 MongoDB 存储订单信息, 订单状态在运送过程中会不断更新, 以 MongoDB 内嵌数组的形式来存储, 一次查询就能将订单所有的变更读取出来.。
  • 物联网场景, 使用 MongoDB 存储所有接入的智能设备信息, 以及设备汇报的日志信息, 并对这些信息进行多维度的分析。
  • 视频直播, 使用 MongoDB 存储用户信息, 点赞互动信息等。

MongoDB基本概念

  • 数据库(Database):MongoDB 中的数据库相当于一个命名空间,用于组织和管理集合。
  • 集合(Collection):集合是 MongoDB 中类似于关系型数据库中的表,用于存储一组文档。
  • 文档(Document):文档是 MongoDB 中的基本存储单元,以 BSON 格式存储,类似于关系型数据库中的行。
实例:
{
  "_id": "34503745034580368086456")
  "name": "ernesto",
  "age": 20,
  "email": "ernesto@example.com"
}

MongoDB的下载和安装

mongoDB的下载

  • mongoDB的官网地址
 https://www.mongodb.com/try/download/community-kubernetes-operator
  • 可选择不同的版本(版本命名规范为x.y.z,y为基数是表示当前版本为开发版,y为偶数是表示当前版本为稳定版本,z是修正版本号,越大越好),不同的操作系统(windows、linux等)和安装方式(zip免安装、msi安装文件)。
    在这里插入图片描述

mongoDB的安装

  • 将下载的安装包上传到服务器,并解压
上传文件:rz 选择文件 mongodb-linux-x86_64-4.0.10.tgz
解压文件:tar -zxvf mongodb-linux-x86_64-4.0.10.tgz

在这里插入图片描述

  • 在bin的同级目录创建数据存储目录 mkdir -p single\data\db
  • 在bin的同级目录创建日志存储目录 mkdir -p single\log
  • 在bin的同级目录创建配置文件 single\mongod.conf
  • 编辑配置文件,进行相应的配置
mongod.conf配置文件内容
systemLog: 
  #mongodb发送所有日志输出的目标指定为文件information
    destination: file
    #日志存储路径
    path: "/data/mongoDb/single/log/mongod.log"
    #当mongo重启时,将新的日志追加到现有日志文件的末尾
    logAppend: true
storage:
    #mongod实例存储数据目录,storage.dbpath设置仅适用于mongod
    dbPath: "/data/mongoDb/single/data/db"
    #journal:
        #启动或禁用持久性日志以确保数据文件保持有效和可恢复
	# true 启用;false 不启用
	# 64 位系统默认启用,启用后 MongoDB 可以在宕机后根据持久性日志进行恢复
	#在6.1 及其以上的 MongoDB 版本中,我们无需也不能通过配置文件中的配置项 storage.journal.enabled 或者通过命令行参数 --journal 和 --nojournal 配置 MongoDB 的 journal 是否开启,因此,如果在使用配置文件的方式启动 MongoDB 时报错 Unrecognized option: storage.journal.enabled,我们只需将配置文件中如下的内容进行删除即可
        #enabled: true
processManagement:
  #启用在后台运行mongos或mongod进程的守护进程模式
    fork: true
net:
    #服务实例绑定的ip,默认是localhost,也可以指定ip,如localhost,192.168.10.8
    bindIp: 0.0.0.0
    #绑定的端口,默认是 27017
    port: 27017

mongoDB启动

../bin/mongod -f mongod.conf
  • 出现successfully则说明启动成功,也可以查看启动的进程
    在这里插入图片描述
    在这里插入图片描述

mongoDB连接

1.使用命令直接连接

../bin/mongo --host=localhost
或
../bin/mongo --host=localhost --port=27017

在这里插入图片描述

2.使用Navicat进行连接

在这里插入图片描述

3.使用MongoDB自带的可视化工具Compass

  • MongoDB Compass 是 MongoDB 官方提供的一款图形化用户界面 (GUI) 工具,用于与 MongoDB 数据库进行交互和管理。
    在这里插入图片描述

数据库基本操作指令

1.查看数据库

show databases;
show dbs;

在这里插入图片描述

2.选择数据库

use database[数据库名称] 选择不存在的数据库会隐式创建该数据库
use admin;

在这里插入图片描述

3.删除数据库

先选择到要删除的数据库 
use test_db;
db.dropDatabase();

在这里插入图片描述

4.查看集合

show collections;

在这里插入图片描述

5.创建集合

db.createCollection('集合名称')

在这里插入图片描述

6.删除集合

db.集合名.drop()

在这里插入图片描述

增删改查

insert

db.集合名.insert(JSON数据)

单条插入

use test_db
db.sysuer.insert({name:'ernesto',age:20})
  • 数据库和集合不存在时,都隐式创建
  • mongodb会给每条数据添加一个唯一的ID
    在这里插入图片描述在这里插入图片描述

多条插入

use test_db
db.sysuer.insert([{name:'gavin',age:25},{name:'张三',age:30}])

在这里插入图片描述
在这里插入图片描述

插入N条数据

db.sysuer.insertMany({})
db.sysuer.insertMany([{name:"test1",age:18},{name:"test2",age:18}])
  • mongodb底层使用JS引擎实现的,所以支持部分js语法,可以使用for循环
use test_db
for(var i=1;i<=10;i++){
  db.sysuer.insert({name:"ernesto"+i,age:i})
}

在这里插入图片描述

delete

db.集合名.remove(条件[,是否删除一条])  
是否删除一条 true是,false否 默认
db.sysuer.remove({name:'ernesto1'},true)

在这里插入图片描述

update

 db.集合名.update(条件,新数据[,是否新增,是否修改多条])
 是否新增:指条件匹配不到数据则插入,true是插入,false否不插入默认
 是否修改多条:指将匹配成功的数据都修改(true是,false否默认)
这样是替换,将符合条件的行直接换成这个
db.sysuer.update({name:'test'},{name:'test001'})

在这里插入图片描述

运算符作用
$inc​递增
$rename​重命名列
$set​修改列值
$unset​删除列
  • 升级语法:
1.修改name的值
db.sysuer.update({name:'test'},{$set:{name:'test002'}})

在这里插入图片描述

2.给test002 增加2岁
db.sysuer.update({name:'test002'},{$inc:{age:2}})

在这里插入图片描述

3.给test002 减少5岁
db.sysuer.update({name:'test002'},{$inc:{age:-5}})

在这里插入图片描述

4.插入一条数据
db.sysuer.insert({name:"ernesto",age:18,sex:'男',job:'it行业'})
修改数据,将 ernesto 改为 gavin  ,age 改为999 ,sex 改为 birthday,job删除

db.sysuer.update({name:"ernesto"},{
	$set:{name:"gavin"},
	$inc:{age:981},
	$rename:{sex:"birthday"},
	$unset:{job:true}
})

在这里插入图片描述

5.更新不存在的值,若不存在则不会有操作
db.sysuer.update({name:'ernesto'},{$set:{name:'张三'}})
在最后加一个true参数,作用是,如果不存在,则插入该条数据,默认为false则不管
db.sysuer.update({name:'ernesto'},{$set:{name:'张三'}},true)

在这里插入图片描述
在这里插入图片描述

query

  • 语法: db.集合名.find(条件,[查询的列])
  • 格式化:db.集合名.find().pretty()
条件:
	查询所有数据  				{}或者不写
	查询age=6的数据 			 {age:6}
	查询age=6且性名称为gavin   {age:6,name:'gavin'}

查询的列
	不写 - 查询全部的列
	{age:1} 只显示age列,可以显示多个想要的列{name:1,age:1.......} 
	{age:0} 除了age列外都显示 可以不显示多个想要的列{name:0,age:0}
	无论怎么写系统自定义_id都会在
运算符作用
$gt​大于
$gte​大于等于
$lt​小于
$lte​小于等于
$ne​不等于
$in​in
$nin​Not in
  • 升级语法:
db.集合名.find(键:值)  

年龄小于100的
db.sysuer.find({age:{$lt:100}})

在这里插入图片描述

db.集合名.find({ 键:{运算符:值} })

年龄等于15、999的
db.sysuer.find({age:{$in:[15,999]}})

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值