MongoDB 是一个开源的、面向文档的 NoSQL 数据库,它采用 JSON 风格的文档存储数据,而不是传统的行和列的存储方式。
基本概念
- 数据库(Database):集合的容器,相当于关系型DB(SQL)中的数据库
- 集合(Collection):数据库中的一组文档,相当于SQL中的表
- 文档(Document):集合中的一条记录,相当于SQL的表中的一行。不同的文档直接不必有相同的结构,这一点是和SQL不同的
- 字段(Field):文档中的键值对,相当于SQL中的列。比较重要的区别是MongoDB中的一个field可以是一个JSON对象或者数值
包管理器安装
-
Windows
$ choco install mongodb -y
-
Linux
- #Redhat
$ sudo yum install -y mongodb-org
- #Ubuntu & Debian & SUSE
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
- #Fedora
$ sudo dnf install mongodb-org
- Mac
- 安装
brew tap mongodb/brew
brew install mongodb-community
- 启动
brew services start mongodb-community
基本命令
mongosh
:打开一个连接到本地实例的MongoShell,所有其他命令都需要在mongosh中执行show databases
(show dbs
):显示当前MongoDB实例中的所有数据库use <dbname>
:切换到数据库<dbname>db
:显示当前使用中的数据库名称cls
:清屏show collections
:显示当前数据库中的所有集合db.dropDatabase()
:删除当前的数据库exit
:退出mongosh会话
创建/插入
insertOne
:在集合中插入一个新的文档。如:dbname.insertOne({name:“laoshi”})insertMany
:在集合中插入多个新的文档。如:dbname.insertMany({name:“zhangsan”},{name:“lisi”})
查找
find
:查询所有的文档。如:dbname.find()find(<filterObject>)
:查询所有满足参数对象<filterObject>中指定过滤条件的数据。如:dbname.find({name:“laoshi”})db.find(<filterObject>,<selectObject>)
:查询所有满足参数对象<filterObject>中指定过滤条件的数据,并且只返回<selectObject>中指定的字段。如:dbname.find({name:“laoshi”}{name:1,email:1})findOne
:与find用法相同,找到满足过滤条件的对象,但还是只返回第一条。如:dbname.findOne({level:1})countDocuments
:返回满足条件的记录的数量sort
:使用给定的字段按照升序或者降序来排序limit
:限定只返回给定数量的文档skip
:从头开始跳过给定数值的文档
更新
updataOne
:更新满足条件的第一个文档updateMany
:更新满足条件的所有文档replaceOne
:替换满足条件的第一个文档save
:通过传入的文档替换已有或插入一个新的文档$set
:只更新文档中$set指定的字段,不会影响其他字段$inc
:用于递增(或递减)文档中指定字段值的操作符$rename
:更新某个字段的名称- $
unset
:删除一个字段 $push
:将值加入一个数组中,不会判断是否有重复的值$pull
:将值从一个数值中移除$addToSet
:将值加入一个数组中,会判断是否有重复的值,若重复则不加入
删除
deleteOne
:删除满足条件的第一个文档deleteMany
:删除满足条件的所有文档
过滤条件
$eq
:等于(equal)$ne
:不等于(not equal)- `$gt/$gte:大于(greater than)/大于等于(greater than or equal)
$lt/\$lte
:小于(less than)/小于等于(less than or equal)$in
:值在指定值列表中,就返回该文档$nin
:值不等于指定值列表中的任何一个,就返回该文档$and
:检查复数条件是否均为真,可以理解为“并且”$or
:检查复数条件中是否有一个为真,可以理解为“或者”$not
:将$not里面的过滤条件取反$exists
:检查一个字段是否存在$expr
:在不同的字段之间作比较
聚合
- 聚合主要用于处理数据,并返回计算后的结果,比如求和、平均值等
$sum
:计算总和$avg
:计算平均值$min
:获取最小值$max
:获取最大值$push
:将值加入一个数值中,不会判断是否有重复的值$first
:获取第一个文档数据$last
:获取最后一个文档数据