IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MongoDB学习笔记(五) -> 正文阅读

[大数据]MongoDB学习笔记(五)

Mongoose简介及其使用方法

在学习中大部分都是通过MongoDB的shell来完成对数据库的各种操作的,而在实际的开发中如果继续采用这种方式是比较低效率的,所以我们需要通过其他语言来操作MongoDB,在前端中一般使用Node.js来操作MongoDB,而Mongoose就是一个让我们通过Node来操作MongodDB的模块

一、Mongoose

  1. Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块(Node中原生的用来操作MongoDB的模块)进行了进一步的优化封装,并提供了更多的功能,在大多数情况下,它被用来把结构化的模式应用到一个MongoDB集合,并提供了验证和类型转换等好处。
  2. ODM中的O指的是JS对象,D指的是数据库中的文档,M的意思是将MongoDB数据库中文档对象映射成JS中的对象,这样通过对JS对象的操作就可以操作数据库了。

1、Mongoose的好处

  1. 可以为文档创建一个模式结构(Schema)
    ???????模式结构就是一个对文档的约束,用来限制文档字段的个数、类型和字段值等
  2. 可以对模型中的对象/文档进行验证
  3. 数据可以通过类型转换转化为对象模型
  4. 可以使用中间件来应用业务逻辑挂钩
  5. 比Node原生的MongoDB驱动更容易

2、Mongoose提供的新的对象

  • Schema(模式对象)
    ???????Schema对象的定义约束了数据库中的文档结构
  • Model(模型对象)
    ???????Model对象作为集合中的所有文档的表示,相当于MongoDB数据库可中的Collection
  • Document(文档对象)
    ???????Document表示集合中的具体文档,相当于集合中的一个具体文档

???????Schema对象、Model对象、Document对象的创建具有先后顺序,先创建Schema对象,用来约束Model对象,然后再创建Model对象作为Document的容器,最后再创建Document对象

3、Mongoose的使用步骤

  1. 下载安装Mongoose模块
    命令:npm i mongoose
  2. 在项目中引入Mongoose模块
    var mongoose = require(“mongoose”);
  3. 连接Mongoose数据库
    mongoose.connect(“mongodb://数据库的ip地址:端口号/数据库名”,{useMongoClient:true});
    如果端口号是默认端口号27017则可以省略不写
  4. 监听MongoDB数据库的连接状态
    在mongoose对象中,有一个属性叫做connection,该对象表示的就是数据库连接,通过监视该对象,可以监听数据库服务器和客户端的连接与断开
    数据库连接成功时执行回调函数
    mongoose.connection.once(“open”,function(){
    });

    数据库断开时执行回调函数
    mongoose.connection.once(“close”,function(){
    });
  5. 断开数据库连接(该步骤一般不需要)
    mongoose.disconnect();

???????mongoose模块的使用步骤中只有步骤1和2是必须的,其他的步骤可有可无。而且MongoDB数据库一般情况下只需要连接一次,连接一次以后,除非项目停止,服务器关闭,否则连接一般不会断开。

二、Mongoose操作数据库的方法

(详细的使用步骤可以查询:mongoose.com网站中的文档手册)

1、创建Schema对象

  1. 将 mongoose.schema 赋值给一个变量,可以简化操作
    var Schema = mongoose.schema;
  2. 创建Schema(模式)对象
    var stuSchema = new Schema({
    name:String,
    age:Number,
    gender:{
    type:String,
    default:“female”
    },
    address:String
    });

????????创建好了Schema对象意味着已经创建好了数据库,规定好的数据库中存储的集合的样式,接下来就是创建集合了

2、创建Model对象

???????? Model代表数据库中的集合,通过Model才能对数据库进行操作,使用mongoose.model(modelNmae,schema)可以创建一个Model对象,Model就是数据库中集合的映射,所以modelName就是指数据库中其对应的那个集合的名字,mongoose会自动将集合名变成复数;schema指的是第一步中创建的对模型进行约束的schema对象名.
????????????????var StuModel = mongoose.model(“student”,stuSchema);

3、向集合中插入一个文档Document

????????mongoose中的文档对象是数据库中文档对象的一个映射,创建好了文档对象,其对应的数据库和集合也将被自动建立。通过以下语句可以实现Document对象的创建:
????????????????Model对象名.create(doc,function(err){
????????????????????????if(!err){

????????????????????????}
????????????????});
????????其中doc是我们要创建的文档对象,当创建成功后,其后的回调函数会执行

二、Model的方法

有了model就可以使用mongoose模块对数据库进行CRUD操作了。

1. Model.create(doc(s),[callback])
? ? ?作用:该函数用来创建一个或多个文档并添加到数据库中
? ? ?参数:doc(s)可以是一个文档对象,也可以是一个文档对象的数组;[callback]回调函数是可选的,如果传入了回调函数,则当文档创建成功后会执行该函数
2. Model.find(conditions,[projection],[options],[callback])
? ? ?作用:该函数用来查询所有符合条件的所有文档,返回一个文档数组

? ? ?Model.findById(id,[projection],[options],[callback])
? ? ?作用:该函数用来根据文档的id属性值查询文档,返回一个文档对象

? ? ?Model.findOne(conditions,[projection],[options],[callback])
? ? ?作用:该函数用来查询符合条件的第一个文档,返回第一个符合条件的文档对象
? ? ?参数:
? ? ?? ? ?? ? ?conditions–查询对象,
? ? ?? ? ?? ? ?projection—投影对象,用于获取想要显示的字段,投影对象有两种定义方式:{字段名:值,字段名:值,…};”字段名1 字段名2 …“,该种定义方式,若不想显示_id字段,只需要在id字段前加入-,即”-_id“
? ? ?? ? ?? ? ?options–查询选项(skip,limit等)
? ? ?? ? ?? ? ?callback–回调函数,查询结果会通过回调函数返回,所以回调函数是必须传入的,回调函数中有两个参数,一个是err,一个是doc(s),doc(s)中存储了查询到的文档。
? ? ?? ? ?? ? ?其他用[]括起来的参数可以不传入
3. Model.update(conditions,doc,[options],[callback])
? ? ?作用:该函数用来修改所有符合条件的一个或多个文档,返回一个文档数组

? ? ?Model.updateMany(id,doc,[options],[callback])
? ? ?作用:该函数用来修改符合条件的所有文档

? ? ?Model.updateOne(conditions,doc,[options],[callback])
? ? ?作用:该函数用来修改符合条件的第一个文档
? ? ?参数:
? ? ?? ? ?? ? ?conditions–查询对象,
? ? ?? ? ?? ? ?doc—修改后的对象
? ? ?? ? ?? ? ?options–配置对象
? ? ?? ? ?? ? ?callback–回调函数
4. Model.remove(conditions,[callback])
? ? ?作用:该函数用来删除符合条件的一个或多个文档

? ? ?Model.deleteOne(conditions,[callback])
? ? ?作用:该函数用来删除符合条件的第一个文档

? ? ?Model.deleteMany(conditions,[callback])
? ? ?作用:该函数用来删除符合条件的所有文档
5. Model.count(条件对象,function(err,count){})
? ? ?作用:该函数用来统计符合条件的文档数目

二、Document的方法

? ? ??通过Model.查询到的结果就是mongoose中新添加的Dcument文档对象,它是Model的一个实例对象。通过instanceof运算符可以检查出Document是Model的实例。Document和MongoDB数据库集合中的文档是一一对应的。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:21:59  更:2021-12-15 18:24:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:39:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码