美文网首页
课时50-课时55笔记.md

课时50-课时55笔记.md

作者: 九旬大爷的梦 | 来源:发表于2018-11-04 19:35 被阅读48次

课时50 mongoose简介

mongoose网站:https://mongoosejs.com/

为什么要用Mongoose?

Mongoose就是一个让我们可以通过Node来操作MongoDB的一个模块。
Mongoose本质是一个对象文档模型(ODM)库,
他对Node原生的MongoDB模块进行了一部优化封装,并且提供了更多的功能。

Mongoose的优势:

  1. 可以像操作对象一样操作数据库
  2. 可以为文档创建一个模式结构(Schema)
  3. 可以对模型中的文档/文档进行验证
  4. 数据可以通过类型转换为对象模型
  5. 可以使用中间件来应用业务逻辑挂钩
  6. 比Node原生的MongoDB驱动更容易

下载安装mongoose模块:
cnpm install mongoose --save

代码:

//引入mongoose模块
let mongoose= require('mongoose');
//链接数据库
mongoose.connect('mongodb://localhost/m_data');
//监听各种状态
let db= mongoose.connection;

db.on('error', ()=>{
    console.log("连接失败!");
})

db.once('open', ()=>{
    console.log("连接成功!")
})

db.once('close', ()=>{
    console.log('连接已经断开成功!')
})

课时51 mongoose基本使用

mongoose的几个新的对象

  1. Schema(模型对象);
    Schema对象定义约束了数据库中的文档结构
  2. Model
    Model 对象作为集合中所有文档的表示,相当于MongoDB数据库中的集合(collection)
  3. Document
    Document表示集合中的的具体文档

代码:

//1. 引入mongoose
let mongoose= require('mongoose');

mongoose.connect('mongodb://localhost/m_data');

let db= mongoose.connection;

db.on('open', ()=>{
    console.log('连接成功!')
})

//2. 新建Schema (表/ 模式对象) 定义规则/字段的规则
let Schema= mongoose.Schema;
//定义personSchema的字段(规则) 有点像构造函数的样子
let personSchema= new Schema({
    name: String,
    sex: String,
    age: Number
});
//3. 创建model(集合)
let personModel= mongoose.model('person', personSchema);
//                插入数据中 会自动把name变成负数-》people     
//4. 插入文档
personModel.create({
    name: '张宁乐',
    sex: '男',
    age: 18
}, (err)=>{
   if(!err){
       console.log('插入成功!')
   }else{
       throw err;
   }
});

personModel.create({
    name: '牛明星',
    sex: '女',
    age: 18
}, (err)=>{
   if(!err){
       console.log('插入成功!')
   }else{
       throw err;
   }
});

课时52 插入多条数据

bd624efb0be6d765776da4f361632b2.png

插入多条数据

personModel.create([
    {name:'张逗逗',age: 2,sex: '男'},
    {name:'牛嘻嘻',age: 2,sex: '女'},
    {name:'张牛',age: 5,sex: '女'}
], (err)=>{
   if(!err){
       console.log('插入成功!')
   }else{
       throw err;
   }
})

课时53 mongoose for find()

mongoose查找数据:
https://mongoosejs.com/docs/api.html#model_Model.find

代码:

  1. 引入mongoose
let mongoose= require('mongoose');
mongoose.connect('mongodb://localhost/m_data');
let db= mongoose.connection;
db.on('open', ()=>{
    console.log('连接成功!')
})
  1. 新建Schema (表)
let Schema= mongoose.Schema;
//定义personSchema的字段(规则) 有点像构造函数的样子
let personSchema= new Schema({
    name: String,
    sex: String,
    age: Number
});
  1. 创建model(集合)
let personModel= mongoose.model('person', personSchema);
//                插入数据中 会自动把name变成复数-》people     

4.插入多条数据

personModel.create([
    {name:'张逗逗',age: 2,sex: '男'},
    {name:'牛嘻嘻',age: 2,sex: '女'},
    {name:'张牛',age: 5,sex: '女'}
], (err)=>{
   if(!err){
       console.log('插入成功!')
   }else{
       throw err;
   }
})
  1. 查询
    5.1 查询name:'张宁乐' 的数据
personModel.find({name: '张宁乐'}, (err, data)=>{
    if(!err){
        console.log(data)
    }else{
        throw err;
    }
})

5.2 find({}, callback) 查询所有

personModel.find({}, (err, data)=>{
    if(!err){
        console.log(data)
    }else{
        throw err;
    }
})

5.3 也可以映射(0隐藏 1显示 id默认显示) 和MongoDB在命令行中的使用方法一样

查询时只显示name 
personModel.find({}, {name: 1, _id: 0}, (err,data)=>{
    if(!err){
        console.log(data)
    }else{
        throw err;
    }
})

5.4 在find() 中 skip(查询开始的位置)和limit(增加的条数)也可以使用

personModel.find({}, {name: 1, _id: 0, age: 1}, {skip: 0, limit: 2}, (err, data)=>{
    //只显示name 和 age   从第1开始 每次查询2条 
    if(!err){
        console.log(data)
    }else{
        throw err;
    }
})
48d986b677f7794a0d51a1301de7d0e.png

//MongoDB的命令行的find() findOne() 等在 mongoose里都可以使用 具体可参考 :https://mongoosejs.com/docs/api.html#model_Model.find

课时54 mongoose-改和删(掌握)

参考: https://mongoosejs.com/docs/api.html#model_Model.update

修改的方法:

  • Model.update()
  • Model.updateMany()
  • Model.updateOne()
  • Model.watch()

代码:

  1. 引入mongoose
let mongoose= require('mongoose');
mongoose.connect('mongodb://localhost/m_data');
let db= mongoose.connection;
db.on('open', ()=>{
    console.log('连接成功!')
})
  1. 新建Schema (表)
let Schema= mongoose.Schema;
//定义personSchema的字段(规则) 有点像构造函数的样子
let personSchema= new Schema({
    name: String,
    sex: String,
    age: Number
});
  1. 创建model(集合)
    let personModel= mongoose.model('person', personSchema);

4.插入多条数据

personModel.create([
    {name:'张逗逗',age: 2,sex: '男'},
    {name:'牛嘻嘻',age: 2,sex: '女'},
    {name:'张牛',age: 5,sex: '女'}
], (err)=>{
   if(!err){
       console.log('插入成功!')
   }else{
       throw err;
   }
})

  1. 修改 {multi:true} 修改全部 或者直接使用 updateMany() 修改全部
  • Model.update()
  • Model.updateMany()
  • Model.updateOne()
  • Model.watch()
personModel.update({name: '张宁乐'}, {$set: {age: 20}}, (err, data)=>{
   if(!err){
       console.log('修改成功!')
       console.log(data)
   }else{
       throw err;
   }
})
4a9f49d480f66c5a64cb9a833459fdd.png
  1. 删除
  • Model.remove()
  • Model.deleteMany()
  • Model.deleteOne()
personModel.remove({name:'牛嘻嘻'}, (err)=>{
    if(!err){
        console.log('删除成功!')
    }else{
        throw err;
    }
})

  1. 统计文档条数 Model.count()
personModel.count({}, (err,count)=>{
    if(!err){
        console.log('查询条数成功! 一共:' + count + '条');
    }else{
        throw err;
    }
})
2b7684dc310af51ac7fb50e5daa1123.png

课时55 mongoose-补充

可以先创建一个文档对象,然后通过方法吧文档放到集合当中

代码:

//创建文档 把文档放到集合当中也可以
//1. 引入mongoose
let mongoose= require('mongoose');
mongoose.connect('mongodb://localhost/m_data');
let db= mongoose.connection;
db.on('open', ()=>{
    console.log('连接成功!')
})

//2. 新建Schema (表)
let Schema= mongoose.Schema;
//定义personSchema的字段(规则) 有点像构造函数的样子
let personSchema= new Schema({
    name: String,
    sex: String,
    age: Number
});
//3. 创建model(集合)
let personModel= mongoose.model('person', personSchema);
  1. 创建一个Document(文档)
let person= new personModel({
    name: '许巍',
    sex: '男',
    age: 38
})
  1. 把创建的文档对象 塞进这个personModel集合当中 Document.prototype.save();
person.save((err, person)=>{
    if(!err){
        console.log('保存成功!')
        console.log(person);
    }else{
        console.log('保存失败!')
    }
})
c85c9b12f87f890e10e74f23555c802.png

相关文章

  • 课时50-课时55笔记.md

    课时50 mongoose简介 mongoose网站:https://mongoosejs.com/ 为什么要用M...

  • DDoS攻防原理及实战

    课程概览 课时列表 评价 笔记 课时1:DDoS介绍和发展史11:55 课时2:DDoS攻防之Syn Flood1...

  • 课时41-课时45笔记.md

    课时41 delete()删除删除一个集合:db.collection.deleteOne()删除一条数据db.c...

  • 课时56-课时60笔记.md

    课时56 http开篇 http 模块:启动一个http服务:代码: 课时57 http路由上 Conten-ty...

  • 课时61-课时65笔记.md

    课时61 表单提交(GET请求) 使用url解析 制作一个简单的表单: 发送到http://127.0.0.1:8...

  • 课时72-课时77笔记.md

    课时72 Express简介 基于 Node.js 平台,快速、开放、极简的 Web 开发框架 Express中文...

  • 课时30-课时34笔记.md

    课时30 fs 同步文件写入 Buffer关注点: Buffer的结构和数组很像,操作方法也和数组很类似。 Buf...

  • 课时78-课时81笔记.md

    课时78 Express-应用生成器上 快速生成一个Express工程目录Express 应用程序生成器 Expr...

  • 课时82-课时86笔记.md

    课时82 Express-小撩-注册上 先处理register.ejs的form提交方式改成post,regist...

  • 课时46-课时49笔记.md

    课时46 集合之间的关系:一对多(noe to noe):比如:人《-----》身份证 老公《-----》老婆...

网友评论

      本文标题:课时50-课时55笔记.md

      本文链接:https://www.haomeiwen.com/subject/hhjlxqtx.html