MongoDB


一、简单使用

1 简介

MongoDB,基于分布式文件存储的数据库,是一个面向文档的数据库,Nosql数据库的一种,数据结构为键值对组成,文档类似于JSON对象。

文档准确来说是BSON,也就是Binary JSON的缩写,二进制的JSON格式。

MongoDB的数据类型是严格的,强类型。

official::MongoDB:应用程序数据平台 | MongoDB

MongoDB 教程 | 菜鸟教程 (runoob.com)

2 使用

社区版下载:official::Download MongoDB Community Server | MongoDB

管理工具:

  • 安装时会只带Compass,直接选择安装即可。也可以使用Navicat等。
  • 命令行工具:official::MongoDB Shell Download | MongoDB
  • Vscode插件:搜索MongoDB for VS Code。连接先点击MongoDB的图标,输入mongodb://localhost:27017即可。

二、 常用命令

1 管理命令

在Compass的shell中输入,或者直接在mongoDB的shell中输入。

输入栏:test >,表示的是当前数据库是test,是mongoDB的默认数据库。一开始是空数据库,使用show dbs命令是无法查看到他。只有当往这个数据库中成功插入数据后,这个数据库才会被真正创建。

# 查看数据库
show databases
show dbs

# 切换数据库(可以直接指定不存在的数据库)
use <db_name>
use local

2 集合

集合:类似于mysql中的表。

操作方式是:db.集合名称.func

MongoDB,操作符表达式大全及实例

# 插入一行数据
# 返回值:acknowledged:告知是否插入成功。insertedId:数据自动绑定一个唯一的全局的ID(UUID)
db.users.insertOne({name: "mugi"})
db.users.insertMany({name: "mio", age:15}, {name: "uyi", age:15})


# 查找所有数据
db.users.find()
db.users.find({name: "mugi"}) # 条件查询(参数1)
db.users.find({name: "mugi"}, {name: 1, age: 1, _id: 0}) # 返回类型限定(参数2。1:返回,0:不返回)
db.users.find({age: {$gt, 3}}) # 其他条件查询(大于3)

# 功能函数(在结果后面直接加,例如:db.users.find().limit(1))
.limit(1) # 限制返回几条数据
.sort({param_1: 1,param_2: 1}) # 排序,param是指键名,比如name(1:升序,-1:降序)
.skip(1) # 跳过几条数据

# 找到第一个满足条件的函数
db.users.findOne({filter})


# 聚合函数
db.users.countDocuments({filter}) # 统计用户数量(可以加条件进行查询)


# 更新数据
db.users.updateOne({age: 3}, {$set: {money: 100}}) # 更新一条数据,第一个是条件,第二个是更新的数据(要加上$set)
db.users.updateMany({filter}) # 更新多条数据


# 删除数据
db.users.deleteOne({age: 3}) # 删除一条数据,删除age为3的第一个用户数据
db.users.deleteMany({filter}) # 删除多条数据
# 单条件
db.users.find({age: {$gt: 3}}) # 返回age大于3的用户
db.users.find({age: {$lt: 3}}) # 返回age小于3的用户
db.users.find({age: {$eq: 3}}) # 返回age等于3的用户

db.users.find({age: {$in: [1,3]}}) # 是否在指定数组中

db.users.find({email: {$exists: true}}) # 返回email字段存在的用户(email值为null也会被返回)
db.users.find({email: {$exists: false}}) # 返回email字段不存在的用户

db.users.find({name: {$regex: /exp/}}) # 正则查询
db.users.find({name: {$regex: /exp/, $options: 'i'}}) # 正则带选项(此处是忽略大小写)

# 多条件
db.users.find({age: {$gte: 3, $lte: 5}}) # 返回age大于等于3,小于等于5的用户
db.users.find({$and: [{age: {$gte: 3}}, {age: {$lte: 5}}]}) # 使用$and,效果和上面的语句一样
db.users.find({age: {$not: {$qe: 3}}}) # 返回年龄不为3的用户