简介:

MongoDB 是一种面向文档的数据库管理系统,用C++等语言撰写而成。是一个介于关系数据库和非关系数据库之间的产品,适用于敏捷开发的数据库。

与关系型数据库对比:

  • 数据库(Database) => 数据库(Database)
  • 集合(Collection) => 数据表(Table)
  • 文档(Document) => 记录(Record)

主要区别:数据结构较为松散,类似 JSON 的存储格式,每条记录的表字段可以不同。而关系型数据库每个表的都拥有相同字段。

安装:

由于 MongoDB 宣布不再开源,HomeBrew 也从核心库中移除了 MongoDB 模块 #43770。现在已无法使用 brew install mongodb 命令安装,否则会提示错误 Error: No available formula with the name "mongodb"

打开终端,执行以下命令安装:

# 添加第三方包
brew tap mongodb/brew

# 安装
brew install mongodb-community

安装完成后,会创建如下文件:

  • 配置文件:/usr/local/etc/mongod.conf
  • 日志目录路径:/usr/local/var/log/mongodb
  • 数据目录路径:/usr/local/var/mongodb

创建:

启动数据库:

# 启动命令
brew services start mongodb-community

创建数据库

# 进入数据库
mongo

# 创建数据库(vue_express 为数据库名)
use vue_express

成功后显示:switched to db vue_express

查看当前数据库:

# 执行命名
db

成功后显示:vue_express

但此时通过 show dbs 命令查看所有数据库的列表,则不会显示刚才创建的,需要新增一条数据:

db.vue_express.insert({"name":"Hello Word"})

成功后显示:WriteResult({ "nInserted" : 1 })

创建管理员:

# 切换到超级管理模式
use admin

成功后显示:switched to db admin

创建超级管理员:

# 用户名、密码、权限
db.createUser({user:'ryan', pwd:'123456', roles:['userAdminAnyDatabase']})

成功后显示:Successfully added user: { "user" : "ryan", "roles" : [ "userAdminAnyDatabase" ] }

  • readAnyDatabase 任何数据库的只读权限(和read相似)
  • readWriteAnyDatabase 任何数据库的读写权限(和readWrite相似)
  • userAdminAnyDatabase 任何数据库用户的管理权限(和userAdmin相似)
  • dbAdminAnyDatabase 任何数据库的管理权限(dbAdmin相似)

基本操作:

# 启动命令
brew services start mongodb-community

# 停止命令
brew services stop mongodb-community

# 重启命令
brew services restart mongodb-community

# 进入 mango
monngo

# 显示数据库列表
show dbs

# 创建/切换数据库
use <collection_name>

# 创建集合(数据表单)
db.createCollection("Posts")

# 查看当前数据库集合
show collections

# 显示当前数据库状态
db.stats()

# 删当前使用的数据库
db.dropDatabase()

# 修复当前数据库
db.repairDatabase()

# 显示当前数据库版本
db.version

# 集合文档插入
db.<collection_name>.insert()

# 查询集合中文档总数
db.<collection_name>.count()

# 查询集合内所有文档
db.<collection_name>.find()

# 集合文档的条件查询
# 大于等于:$gte | 大于:$gt | 小于等于:$lte | 小于:$lt | 等于:$eq | 不等于:$ne
# 存在某个字段时才抽出:$exists
db.<collection_name>.find({"title": {$exists:true}})

# 抽出集合文档内指定字段的数据(其余字段不显示)
db.<collection_name>.find({},{title:true, date:true}})

# 抽出文档的方法
# 倒叙:sort() | 限制:limit() | 跳过:skip()
db.<collection_name>.find({},{_id:0}).limit(5)

# 查询集合内指定数据
db.<collection_name>.findById()

# 集合文档更新(符合条件的第一条记录)
# update(<filter>, <update>, (options))
db.<collection_name>.update({"tag":"口罩"}, {$set: {"unit":10}})

# 集合文档更新(符合条件的所有记录)
db.<collection_name>.update({"tag":"口罩"}, {$set: {"unit":10}}, {multi:true})

# 集合文档修改(特殊函数,原"unit"基础上增加5)
# 递加:$inc | 相乘:$mul | 改名:$rename | 新增/修改:$set | 删除字段:$unset
db.<collection_name>.update({"title":"N95"}, {$inc: {unit: 5}})

# 集合文档的特殊更新(有记录就更新,无记录就你追加)
db.<collection_name>.update({"title":"N90"}, {"title":"N90", "tag":"口罩", "unit":10}, {upsert:true})

# 集合文档更新(单条记录)
db.<collection_name>.updateOne()

# 只删除文档内第一个匹配的
db.<collection_name>.deleteOne()

# 删除文档内所有匹配的
db.<collection_name>.deleteMany()

# 删除集合中所有文档
db.<collection_name>.remove()

参考资料:

The MongoDB 4.2 Manual
MongoDB 教程

感谢您的阅读,本文由 蓝色梦想 版权所有。如若转载,请注明出处:蓝色梦想 - MacOS 使用 brew 安装 MongoDB