简介:
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