2020年一篇文章入门Mongodb
2020-02-11 本文已影响0人
爱写Bug的程序猿
logo
不要问我为什么挂图,听说挂图可以提供浏览量
介绍
MongoDB是一种存储二进制JSON格式的非关系数据库。
版本
小版本号,奇数为开发板、偶数为稳定版。
3.2版本后不支持32位系统。
下载安装(4.2)
下载:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.2-signed.msi
安装:无脑下一步
配置:配置环境变量
默认端口:27017
核心概念
- 数据库:数据的仓库
- 集合:类似于数组
- 文档:Mongo最小的单位,一般操作的是文档
注意:在MongoDB中数据库和集合不用手动创建。
系统变量
- db:当前数据库的名字
基本指令
-
show dbs:列出数据库
-
use <数据库名>:进入数据库
- 注意:如果没有数据库会自动创建数据库。
-
show collections :显示数据库中所以的集合。
-
db.<collections>.drop():删除集合
-
db.dropDatabase(): 删除所在的数据库
CRUD指令
插入文档
- db.<collections>.insert(JSON)
- 向<collections>集合中插入一个JSON文档。
查询文档
- db.<collections>.find()
- 查询<collections>中的所有JSON文档,返回的是数组。
- db.<collections>.findOne({<filed>:<value>})
- 查询与<filed>等于<value>的JSON文档,返回的是对象。
- 内嵌查询:{“filed.filed”:value}
- 分页:.skip().limit()
修改文档
- db.<collections>.update(query,doc,options)
- 查询到query,将query匹配的那个JSON进行替换为doc。
- 操作符:在doc中写
- $set:{}:修改某一个字段。
- $unset:{}:删除某个字段。
- $push:{}: 添加元素到一个数组
- $addToSet:{}: 添加不重复的元素到数组
- 参数:options
- mulit:boolean 修改多个
- 注意:默认改一个。
删除文档
- db.<collections>.deteleOne()
- db.<collections>.deleteMany()
- db.<collections>.remove()
- 注意:默认删除多个。
文档关系
- 一对一
- 一对多
- 多对多
文档其他操作
sort
db.<collections>.find().sort(SortJSON);
SortJSON:
{
filed:1 | -1
}
说明:
对filed字段进行
1-升序或
-1-降序
排序
投影
db.<colletions>.find({},MapJSON);
MapJSON:
{
filed:0 | 1
}
说明:
显示或隐藏某个字段
0-隐藏
1-显示
Mongoose
Node操作mongodb的库。
优势
- 可以对文档创建一个模式结构(Schema)
- 对模型中的对象进行约束。
- 自动类型转换
对象
- Schema:模式对象
- Model:集合就是模型
- Document:就是JSON
Schema->Model->Document
安装
npm i -S mongoose
使用
const mongo = require('mongoose');
const { Schema, model } = mongo;
const stuSchema = new Schema({
name:String,
age:Number,
gender:Number,
address:String
});
const Student = model('Student', stuSchema);
mongo.connection.once('open',()=>console.log("连接成功"));
mongo.connection.once('close', ()=> console.log("断开连接"));
async function start() {
const connect = await mongo.connect('mongodb://localhost:27017/dome1',{useNewUrlParser:true ,useUnifiedTopology:true});
// const resRowInfo = await Student.create({
// name:100,
// age:"15",
// gender:"男"
// });
// // const resRowInfo = await Student.find();
// const resRowInfo = await Student.remove({gender:null});
const resRowInfo = await Student.findOne()
resRowInfo.name = '猪八戒';
resRowInfo.address = '高老庄';
resRowInfo.save();
console.log(resRowInfo);
// connect.disconnect();
}
start();