MongoDB
一、简介
MongoDB是一个基于分布式文件存储的数据库,官方地址 https://www.mongodb.com/
数据库是什么
数据库是按照数据结构来组织、存储和管理数据的应用程序
数据库管理数据的特点
相比纯文件管理数据,数据库管理数据有如下特点:
- 速度更快
- 拓展性更强
- 安全性更强
为什么旋转Mongodb
操作语法与javascript类似,容易上手,学习成本低
二、核心概念
-
数据库 数据库是一个数据仓库,数据库服务下可以创建很多数据库,数据库中可以存放很多集合
-
集合 集合类似于js中的数组,在集合中可以存放很多文档
-
文档 文档是数据库中的最小单位,类似于JS中的对象
-
jos n文件好比是一个数据库,一个mongodb服务下可以有N个数据库
-
json文件中一级属性的数组值好比是集合
-
数组中的对象好比是文档
-
对象中的属性有时也称之为字段
三、下载安装与启动
下载地址:https://www.mongodb.com/try/download/community
docker pull mongdb
docker run -itd --name mongo -p 27017:27017 mongo --auth
#进入到内部
docker exec -it mongo /bin/mongosh
#切换数据库
use admin
#创建账户
db.createUser(
{
user: "user",
pwd: "123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
#验证
db.auth('user','123');
#进入服务器
docker exec -it mongo bash
# 登录
mongosh -u user -p 123
# 显示所有数据库
show dbs
# 创建集合
db.createCollection('name')
#显示curret database 所有的集合
show collections
#删除某个集合
db.集合名.drop()
#重命名
db.集合名.rename()
node链接mongdb
npm i mongoose
const mongoose = require('mongoose')
mongoose.connect('mongodb://user:123@127.0.0.1:27017/admin')
// callback
mongoose.connection.on('open',()=> {
console.log('Success')
})
mongoose.connection.on('error',()=> {
console.log('error')
})
mongoose.connection.on('close',()=> {
console.log('close')
})
mongodb常用语法
- 数据库操作
use database_name
: 切换到指定的数据库db
: 查看当前所在的数据库show dbs
: 显示所有数据库db.dropDatabase()
: 删除当前数据库
- 集合操作
db.createCollection("collection_name")
: 创建集合db.getCollectionNames()
: 查看所有集合db.collection_name.drop()
: 删除集合
- 文档操作
db.collection_name.insert(document)
: 插入文档db.collection_name.find()
: 查找文档db.collection_name.update(query, update, options)
: 更新文档db.collection_name.remove(query, options)
: 删除文档
- 查询操作
db.collection_name.find(query, projection)
: 查找文档db.collection_name.findOne(query, projection)
: 查找单个文档db.collection_name.find().pretty()
: 以美化的格式显示查询结果db.collection_name.find(query).count()
: 返回查询结果的数量
- 条件查询
{field: value}
: 等于{field: {$gt: value}}
: 大于{field: {$lt: value}}
: 小于{field: {$in: [value1, value2]}}
: 在数组中{field: {$regex: /pattern/}}
: 正则表达式
- 索引操作
db.collection_name.createIndex({field: 1})
: 创建索引db.collection_name.getIndexes()
: 查看索引db.collection_name.dropIndex("index_name")
: 删除索引
- 聚合操作
db.collection_name.aggregate([{$group: {_id: "$field", count: {$sum: 1}}}])
: 聚合查询