码迷,mamicode.com
首页 > 其他好文 > 详细

Mongoose的使用

时间:2020-09-16 12:16:35      阅读:30      评论:0      收藏:0      [点我收藏+]

标签:第一个   doc   对象模型   名称   use   unifi   delete   引入   parser   

Mongoose的使用

4.1简介

Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块进行了进一步的优化封装,并提供了更多的功能。

4.2优势

1)       可以为文档创建一个模式结构(Schema)

2)       可以对模型中的对象/文档进行验证

3)       数据可以通过类型转换转换为对象模型

4)       可以使用中间件来应用业务逻辑挂钩

5)       比Node原生的MongoDB驱动更容易

4.3核心对象

4.3.1 Schema

模式(约束)对象,通过Schema可以对集合进行约束

4.3.2 Model

模型对象,相当于数据库中的集合,通过该对象可以对集合进行操作

4.3.3 Document

文档对象,它和数据库中的文档相对应,通过它可以读取文档的信息,也可以对文档进行各种操作

4.4使用

4.4.1连接数据库

npm init  先自动创建一个package.json文件

1)       下载安装Mongoose

npm i mongoose --save

2)       引入Mongoose

var mongoose = require("mongoose");

3)       连接MongoDB数据库

mongoose.connect("mongodb://ip地址:端口号/数据库名");

 

const  mongoose = require("mongoose");


//1.连接数据库
// connect 
//第一个实参是数据库地址URL
//第二个实参是配置对象
//第三个实参是连接数据库的回调参数

mongoose.connect("mongodb://localhost:27017/0318_mongoose_demo",{
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex:true
},function(err){
    if(err){
        console.log("连接数据库失败");
    }else{
        console.log("连接数据库成功");
    }
});


// mongoose.connection.once("open",function(err){
//     if(err){
//         console.log("连接数据库失败");
//     }else{
//         console.log("连接数据库成功");
//     }
// })

// 2.创建约束对象(Schema)
let starsSchema = new mongoose.Schema({
    name:{
        type:String,    //声明当前字段数据类型
        required:true,  //声明当前字段是否必传
        unique:true     //声明当前字段是否唯一
    },
    age:Number,
    sex:{
        type:String,
        default:"未知" //声明当前字段的默认值
    },
    roles:[String],    //声明当前字段数据类型为数组, 内部子元素的类型必须是String
    info:mongoose.Schema.Types.Mixed
})

//3.创建模型对象(Model)
//第一个实参->集合名称
//第二个实参->约束对象
let starsModel = mongoose.model(stars,starsSchema);

//4.创建文档对象
let starDocument = new starsModel({
    name:"彭于晏",
    age:18.01,
    sex:"猛男",
    roles:["唐钰小宝"],
    info:"断臂帅哥"
})

//5.将文档对象存储至数据库中,是一个promise对象
starDocument.save()
    .then(function(){
        console.log(数据添加成功!!!)
    })

即可将数据保存在mongodb中,前提是mongodb服务已启动

 

使用方式

1)       Model的方法

                  create()

                           - 创建一个或多个文档对象并添加到数据库中

                  find()

                           - 查找所有符合条件的文档,返回的是数组

                  update()

                           - 修改(替换)一个或多个

                  remove()

                           - 删除一个或多个文档

 

let mongoose = require(mongoose);

//1.连接数据库
mongoose.connect("mongodb://localhost:27017/0318_mongoose_demo",{
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex:true
},function(err){
    if(err){
        console.log("连接失败")
    }else{
        console.log("连接成功")
    }
})

// 2.创建约束对象(Schema)
let starsSchema = new mongoose.Schema({
    name:{
        type:String,    //声明当前字段数据类型
        required:true,  //声明当前字段是否必传
        unique:true     //声明当前字段是否唯一
    },
    age:Number,
    sex:{
        type:String,
        default:"未知" //声明当前字段的默认值
    },
    roles:[String],    //声明当前字段数据类型为数组, 内部子元素的类型必须是String
    info:mongoose.Schema.Types.Mixed
})

//3.创建模型对象(Model)
//第一个实参->集合名称
//第二个实参->约束对象
let starsModel = mongoose.model(stars,starsSchema);

//C->create ,是个promise
// starsModel.create({
//     name:"鸡你太美",
//     age:9.99,
//     sex:"男孩子",
//     roles:["NBA形象大使"],
//     info:"cxk"
// })
//     .then(function(){
//         console.log("添加成功")
//     })

//R->read
// starsModel.find({age:17.99})
//     .then(function(res){
//         console.log(res)
//     })
// starsModel.findOne({age:17.99})
//     .then(function(res){
//         console.log(res)
//     })

// U->update
// starsModel.updateMany({age:17.99},{$set:{age:37.99}})
//     .then(function(res){
//         console.log(res)
//     })
// starsModel.updateOne({age:37.99},{$set:{age:27.99}})
//     .then(function(res){
//         console.log(res)
//     })

// D->delete
// starsModel.remove({sex:"男孩子"})
//     .then(function(res){
//             console.log(res)
//         })

 

Mongoose的使用

标签:第一个   doc   对象模型   名称   use   unifi   delete   引入   parser   

原文地址:https://www.cnblogs.com/fsg6/p/13603508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!