mongodb数据库 介绍及教程大全

本文详细介绍了MongoDB的特性、安装、配置与基本操作,包括数据的增删改查、集合与数据库管理,适合初学者快速掌握MongoDB的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是MongoDB ?

#MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。
#MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
#MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
简介

MongoDB 是一个基于分布式 文件存储的NoSQL数据库
由C++语言编写,运行稳定,性能高
旨在为 WEB 应用提供可扩展的高性能数据存储解决方案
查看官方网站

MongoDB特点

模式自由 :可以把不同结构的文档存储在同一个数据库里
面向集合的存储:适合存储 JSON风格文件的形式
完整的索引支持:对任何属性可索引
复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目的是提供冗余及自动故障转移
自动分片:支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器
丰富的查询:支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组
快速就地更新:查询优化器会分析查询表达式,并生成一个高效的查询计划
高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)

基本操作

MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成
MongoDB文档类似于JSON对象,字段值可以包含其他文档、数组、文档数组
安装管理mongodb环境
完成数据库、集合的管理
数据的增加、修改、删除、查询

三元素: 数据库、集合、文档

数据库是一个集合的物理容器
集合就是关系数据库中的表
文档对应着关系数据库中的行

文档,就是一个对象,由键值对构成,是json的扩展Bson形式 {‘name’:‘guojing’,‘gender’:'男’}

集合:类似于关系数据库中的表,储存多个文档,结构不固定,如可以存储如下文档在一个集合中 {‘name’:‘guojing’,‘gender’:‘男’} {‘name’:‘huangrong’,‘age’:18} {‘book’:‘shuihuzhuan’,‘heros’:'108’}

一个mongodb中可以建立多个数据库

数据库:是一个集合的物理容器,一个数据库中可以包含多个集合

1.不能是空字符串("")。
2.不得含有’ '(空格)、.、$、/、\和\0 (空宇符)。
3.应全部小写。
4.最多64字节

集合:集合中可以存储多个文档

1.集合名不能是空字符串""。
2.集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
3.集合名不能以"system."开头,这是为系统集合保留的前缀。
4.用户创建的集合名字不能含有保留字
符。有些驱动程序的确支持在集合名里面包
含,这是因为某些系统生成的集合中包含该
字符。除非你要访问这种系统创建的集合,
否则千万不要在名字里出现$。

文档:就是一个对象,由键值对构成,是json的扩展Bson(可以理解为在JSON的基础上添加了一些json中没有的数据类型)形式。

需要注意的是:
1.文档中的键/值对是有序的。
2.文档中的值不仅可以是在双引号里
面的字符串,还可以是其他几种数据类
型(甚至可以是整个嵌入的文档)。
3.MongoDB区分类型和大小写。
4.MongoDB的文档不能有重复的键。
5.文档的键是字符串。除了少数例外
情况,键可以使用任意UTF-8字符。
文档键命名规范:
1.键不能含有\0 (空字符)。这个字符用来表示键的结尾。
2. .和$有特别的意义,只有在特定环境下才能使用。

关于mongodb 的安装与启动

安装
方式一: MongoDB安装很简单,无需下载源文件,可以直接用apt-get命令进行安装最新的可靠版。

1.sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

如果是16.04执行下面这条操作

2.echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

如果是18.04执行下面这条操作
echo “deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse” | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

3.sudo apt-get update

4.sudo apt-get install -y mongodb-org

安装完成后,在终端输入以下命令查看MongoDB版本: mongo -version 一般安装成功后会显示为4.0.1版本 MongoDB shell version v4.0.1
方式二: 根据官网指定步骤安装: https://www.mongodb.org/downloads
1.使用下载包手动安装:

sudo apt-get install libcurl3 openssl

2.下载安装包: https://www.mongodb.com/download-center#production https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.0.1.tgz
3.解压也可以手动解压(解压后可以起个端点的名称)

tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.0.1.tgz

4.进入加压后文件存放的目录,然后将mongodb移动到/usr/local/目录下

sudo mv mongodb-linux-x86_64-ubuntu1604-4.0.1/ /usr/local/mongodb

5.将可执行文件添加到PATH路径中,自己的环境配置文件中添加此路径

sudo vim .bashrc

export PATH=/usr/local/mongodb/bin:$PATH
退出并保存

source .bashrc 激活配置文件

安装完成后,在终端输入以下命令查看MongoDB版本: mongo -version 一般安装成功后会显示为4.0.1版本 MongoDB shell version v4.0.1
管理mongo

配置文件在/etc/mongod.conf
默认端口27017

启动mongodb 服务

sudo service mongod start

停止,停止后输入将不能启动shell

sudo service mongod stop

重置服务

sudo service mongod restop

启动mongodb客户端

mongo

终端退出连接

exit

或ctrl+c
卸载mongodb数据库
删除 MongoDB 包

sudo apt-get purge mongodb-org

删除 MongoDB 数据库和日志文件

sudo rm -r /var/log/mongodb

sudo rm -r /var/lib/mongodb

mongodb数据库 集合 及相关操作

数据库基本命令:

启动数据库

sudo service mongod start

#在输入并进入数据库
mongo

在这里插入图片描述
查看当前数据库

db;

在这里插入图片描述
查看所有数据库

show dbs;

在这里插入图片描述

切换数据库

use 数据库名;

在这里插入图片描述

查看当前数据库信息

db.stats()
db:当前数据库的名字。
collections:当前数据库的集合数。
objects:当前数据库所有集合总所包含的对象(即文档)的数量。
avgObjSize:每个文档的平均大小(以字节为单位)。
dataSize:此数据库中保存的未压缩数据的总大小,不是指占有磁盘大小,单位是bytes。
storageSize:分配给此数据库的集合用于存储文档的空间总量,也就是当前数据库占有磁盘大小,单位是bytes。
numExtents:当前数据库所有集合包含的扩展数量的统计。
indexes:数据库中包含的所有集合的索引总数,也就是system.indexes表数据行数。
indexSize:此数据库上创建的所有索引的总大小,单位是bytes。

在这里插入图片描述

数据库删除:删除当前指向的数据库,如果数据库不存在,则什么也不做

db.dropDatabase()

集合的相关操作

例1:不限制集合大小

db.createCollection("stu")

例2:限制集合大小,后面学会插入语句后可以查看效果

参数capped:默认值为false表示不设置上限,值为true表示设置上限
参数size:当capped值为true时,需要指定此参数,表示上限大小,当文档达到上限时,会将之前的数据覆盖,单位为字节

db.createCollection("sub", { capped : true, size : 10 } )

例3:创建固定集合 sub,整个集合空间大小 6142 KB, 文档最大个数为 100 个。

db.createCollection("sub", { capped : true, size : 10 ,max:100} )

查看当前数据库所有集合

show collections:当前数据库的集合数。

语法: db.集合名称.find()

db.stu.find()

删除集合

语法格式:

db.集合名称.drop() 如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false

数据的 增,删,改,查操作

文档 文档是一组键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

RDBMS MongoDB
数据库 数据库
表格 集合
行 文档
列 字段
表联合 嵌入文档
主键 主键 (MongoDB 提供了 key 为 _id )

MongoDB 数据类型 下表为MongoDB中常用的几种数据类型。
数据类型 描述
String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean 布尔值。用于存储布尔值(真/假)。
Double 双精度浮点值。用于存储浮点值。
Array 用于将数组或列表或多个值存储为一个键。
Timestamp 时间戳。记录文档修改或添加的具体时间。
Object 用于嵌入式的文档,即一个值为一个文档
Null 用于创建空值。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID 对象 ID。用于创建文档的 ID。
Binary Data 二进制数据。用于存储二进制数据。

插入文档

db.集合名称.insert({键:值})

在这里插入图片描述
注意:插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId

指定 _id插入

db.stu.insert({_id:'20180819',name:'郑程峰2',gender:1})

多条插入: 括号方法 ([{}]) 多条要加入一对[]

db.stu.insert([{name:'王明',gender:1},{name:'王玲玲',gender:0}])

指定单词方法插入 insertOne代表插入一条 insertMany代表插入多条

db.集合名称.insertOne(document) db.集合名称.insertMany(document)

查询全部文档

语法: db.集合名称.find()

db.文档名.find()

更新文档

MongoDB 使用 update() 和 save() 方法来更新集合中的文档。两个函数是有区别的。
update() 方法

update() 方法用于更新已存在的文档

db.collection.update(
,
,
{
upsert: ,
multi: ,
}
)

参数说明:

query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

全文档更新

db.集合名.update(找到指定{name:'xxxxx'},并更新新的{name:'张xxx'})

指定属性更新,通过操作符$set

db.集合名.update({name:'李自成'},{$set:{name:'闯王李自成'}})

指定属性通过操作符$set更新多条

db.集合名.update({name:'小花'},{$set:{name:'小白'}},{multi:true})

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值