mongodb和mongoose的区别
- MongoDb是一个基于分布式文件存储的文档类型数据库,MongDB是介于关系型数据库和非关系型数据库之间的产品
- Mongoose是在node.js异步环境下对MongDB进行快速操作的对象模型工具,Mongoose是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的、增删改查等方法,简单说就是为了实现对mongdb的快速开发。
Mongoose介绍
- Mongoose 是一种MongoDB对象建模工具,旨在在异步环境中工作。Mongoose 支持Node.js和Deno(alpha)
- Mongoose可以基于schema结构定义数据模型,就是为了做到快速开发,开箱即用,可以使用Mongoose定义数据的表结构,表结构在Mongoose中叫schema,直接可以使用表结构创建数据模型,下面让我们感受一下吧。
安装Mongoose
npm 初始化项目(不知道npm怎么用的,需要自行查找资料)
npm i mongoose【安装mongoose】
引入模块,连接数据库
//引入模块
var mongoose = require('mongoose');
//连接数据库
//mongodb://127.0.0.1 数据库地址
// test 是数据库名
mongoose.connect('mongodb://127.0.0.1/test').then(res => {
console.log("连接成功!");
})
//如果用localhost连接不上,可以更换127.0.0.1
mongoose中的对象
Schema模型对象(用户约束文档的结构-类似表头)
Model模型对象(mongodb中的集合-类似表)
Document文档对象(mongodb中的文档-表中一行数据)
定义一个schema
Mongoose 的一切始于 Schema。每个 schema 都会映射到一个 MongoDB collection ,并定义这个collection里的文档的构成
var Schema = mongoose.Schema;
var blogSchema = new Schema({
title: String,
author:String,
body: String,
date: {type:Date, default: Date.now},
});
官方解释:
document 里每个属性的类型都会被转换为 在 blogSchema 里定义对应的 SchemaType。 例如 title 属性会被转换为 SchemaType String, 而 date属性会被转换为 SchemaType Date。 还可以像上面 meta 属性,更详细地指定嵌套在里面的属性类型。
我们可以把Schema看成表的结构约束,可以把Model看成像表中插入数据的模型
创建一个model
我们可以把schema转换为一个Model,使用的函数mongoose.model(modelName,schema)
var Test = mongoose.model("test",blogSchema);
这里是为了让Schema和model产生一个映射
插入
Test.create({
title: "《木兰花令拟古决绝词》",
author:"纳兰容若",
body: "人生若只如初见,何事秋风悲画扇。",
}).then((res) => {
console.log(res);
console.log("保存成功!");
})
验证
// 1
{
"_id": ObjectId("64000d2d594f1f2dd95381a4"),
"title": "《木兰花令拟古决绝词》",
"author": "纳兰容若",
"body": "人生若只如初见,何事秋风悲画扇。",
"date": ISODate("2023-03-02T02:42:53.155Z"),
"__v": NumberInt("0")
}
查询
Test.findById("64000d2d594f1f2dd95381a4").then(res => {
console.log(res);
})
验证
{
_id: new ObjectId("64000d2d594f1f2dd95381a4"),
title: '《木兰花令拟古决绝词》',
author: '纳兰容若',
body: '人生若只如初见,何事秋风悲画扇。',
date: 2023-03-02T02:42:53.155Z,
__v: 0
}
删除
Test.deleteOne("64000d2d594f1f2dd95381a4").then(res => {
console.log(res);
})
修改
Test.updateOne({_id:"64000d2d594f1f2dd95381a4"},{title: "111111"}).then(res => {
console.log(res);
})
这也就不一一给大家验证了,最后把mongoose官方中文文档分享给大家。