数据库:
Mongo[非关系型数据库]
docker pull mongo:latest
//--auth指的是登录需要用户名和密码
docker run -itd --name mongo -p 27017:27017 mongo --auth
//进入数据库容器
docker exec -it mongo mongo admin
//创建用户
db.createUser({user:'admin',pwd:'admin',roles:[{ role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
//验证是否能成功连接 ,返回1则成功
db.auth('admin','admin');
- 使用navcat连接的过程中一直报错:No suitable servers found,参数都是正确的,但是一直报错
原因:docker容器映射的27017端口没开,导致连接失败
- 插入数据的时候报错:
```sql
db.todos.insert({“title”:”task1”}) WriteCommandError({
"ok" : 0,
"errmsg" : "command insert requires authentication",
"code" : 13,
"codeName" : "Unauthorized"
})
原因:没有使用db.auth(用户名,密码)命令登录
命令:
| show dbs | 展示所有数据库 |
| --- | --- |
| db | 展示当前所在数据库 |
| use 数据库名 | 切换到指定数据库,如果没有的话直接创建 |
| db.auth(用户名,密码) | 登录,必须在use admin之后进行登录 |
| db.集合名【mysql中的表】.insert({json数据}) | 往集合里添加数据 |
| db.集合名.find() | 显示集合下的所有数据 |
| db.集合名.findOne() | 显示集合下的第一条数据 |
| db.集合名.drop() | 删除当前集合 |
| db.dropDatabase() | 删除当前数据库[一般不用] |
| db.集合名.remove({条件}) | 删除集合中的文件数据 |
批量插入:使用insert,不过参数是一个数组<br />修改数据:update修改器
```sql
//修改值
db.workmate.update({"name":"MinJie"},{"$set":{"skill.skillThree":'word'}})
//删除字段
db.workmate.update({"name":"MinJie"},{$unset:{"age":''}})
//值计算
db.workmate.update({"name":"MinJie"},{$inc:{"age":-2}})
//插入一列多行
db.workmate.update({},{$set:{interset:[]}},{multi:true})
//如果该条数据不存在,就新插入
db.workmate.update({name:'xiaoWang'},{$set:{age:20}},{upsert:true})
后端:
mongoose:
schema:用来定义表的模板,实现和MongoDB数据库的映射,key-value的json数据
String :字符串类型
Number :数字类型
Date : 日期类型
Boolean: 布尔类型
Buffer : NodeJS buffer 类型
ObjectID : 主键,一种特殊而且非常重要的类型
Mixed :混合类型
Array :集合类型
Model:具备表操作能力的一个集合,是Mongoose的核心能力
entity:类似record,由model创建的实体
Koa:
【注意】
postman的post请求参数名和参数值都必须使用双引号,不加或加单引号都会导致bad request