初次使用MongoDB和mongoose

MongoDB和Mongoose的入门教学 MongoDB现在绝对是市面上最受欢迎的noSql数据库,本文将简单讲解Mongoose和MongoDB的语法和特点。 阅读详情

MongoDB和mongoose

Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,可以在异步的环境下执行。同时它也是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。

它的作用就是,在程序代码中,定义一下数据库中的数据格式,然后取数据时通过它们,可以把数据库中的 document 映射成程序中的一个对象,这个对象有 .save .update 等一系列方法,和 .title .author 等一系列属性。在调用这些方法时,odm 会根据你调用时所用的条件,自动转换成相应的 mongodb shell 语句帮你发送出去。自然地,在程序中链式调用一个个的方法要比手写数据库操作语句具有更大的灵活性和便利性。

const mongoose = require('mongoose')
const db = 'mongodb://localhost/jinghong'

// 用原生Promise代替mongoose中的promise
mongoose.Promise = global.Promise

exports.connect = () => {
  let connectLimit = 0
  return new Promise((resolve, reject) => {
    if (process.env.NODE_ENV !== 'production') {
      mongoose.set('debug', true)
    }

    mongoose.connect(db, { useNewUrlParser: true })

    mongoose.connection.on('disconnected', () => {
      if (connectLimit < 5) {
        // 断开重连
        mongoose.connect(db,  { useNewUrlParser: true })
        connectLimit ++
      } else {
        const err = new Error('链接失败超过五次')
        reject(err)
      }
    })

    mongoose.connection.on('error', err => {
      reject(err)
    })

    // 链接成功
    mongoose.connection.once('open', () => {
      const Dog = mongoose.model('Dog', {
        name: String
      })
      const catty = new Dog({
        name: 'supper catty'
      })

      catty.save().then(() => {
        //存储成功
        console.log('catty存储成功')
      })

      resolve('链接成功')
    })
  })
}

其中

const db = ‘mongodb://localhost/jinghong’

localhost 是 mongoDB 所在的地址,端口号省略则默认连接 27017;jinghong 是数据库的名称。

异步调用:

;(async() => {
  try{
    const status = await connect()
    console.log(status)
  } catch (err) {
    console.log(err)
  }
})()


链接失败的时候还可以这样去写

mongoose.connection.on('error', err => {
   throw new Error('制作错误')
})


查看MongoDB存储的数据

在命令行中输入:mongo,接着输入下图所示相关信息即可
这里写图片描述


MongoDB中document、collection、database三个概念



Mongoose中schema、model、entity三个概念

  • Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
  • Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
  • Entity : 由Model创建的实体,他的操作也会影响数据库
    它们之间的关系是Schema生成Model,Model创造Entity,Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性。Model对应collection,Entity对应docment
在Egg中使用MongoDB及Mongoose 新公司的项目中用了Egg和MongoDB及mongoose。最近有空来系统的梳理一下。 参考资料&扩展阅读: Mongoose中文文档 mongoose学习笔记(超详细) Mongoose中文文档-Mongoose的API Egg链接MongoDB Egg 使用 egg-mongoose来方便的跟数据库进行链接 // eggProject/server/config/config.... 阅读详情

相关推荐

eggjs使用egg-mongoose操作MongoDB数据库

eggjs使用egg-mongoose操作MongoDB数据库 npm安装mongoose依赖 npm install egg-mongoose --save 配置config/plugin.js和config.default.js // config/plugin.js module.exports = { ... ... mongoose: { ...

404 Not Found. 2445

mongodb和mongoose有什么主要区别

Mongoose是在node.js异步环境下对MongoDB进行便捷操作的对象模型工具,Mongoose是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的、增删改查等方法。MongoDB是最原始的驱动,Mongoose是基于MongoDB的封装,Mongoose更节省代码量,MongoDB支持原生的MongoDB数据库的命令写法和最新的语法。MongoDB是一个基于分布式文件存储的文档型数据库,MongoDB是一个介于关系数据库和非关系数据库之间的产品。

m0_64139140的博客 723

【Mongodb】mongoose代码模块化和图形化工具

本文介绍了MongoDB的模块化开发方法,通过Mongoose实现数据库操作的代码复用。主要内容包括:1) MongoDB启动准备工作;2) 构建模块化目录结构,包含配置文件(config.js)、数据库连接(db.js)和模型文件(user.js/active.js);3) 使用模型文件进行CRUD操作的示例;4) 推荐两种图形化管理工具Robo 3T和Navicat,并详细说明Navicat连接MongoDB及创建数据库、集合和文档的具体步骤。该方法可有效减少重复代码,提高开发效率。

weixin_44899940的博客 977

mongoDB与mongoose

mongoDB简介 mongoDB与一些关系型数据库相比,它更显得轻巧、灵活,非常适合在数据规模很大、事务性不强的场合下使用。同时它也是一个对象数据库,没有表、行等概念,也没有固定的模式和结构,所有的数据以文档的形式存储。 ·由c++语言编写,是一个分布式文件存储的开源NoSQL数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。 · mongoDB旨在为web应用提供可扩展的...

weixin_33962621的博客 358

MongoDB 4.2基本用法以及Mongoose的使用(长文)

一、前言 本来在前言里面写了一堆数据库类型介绍、为什么要学习Mongodb数据库等等,后来我又全删了,这种概念的东西看了也只能混个脸熟,即使明白了也过一阵子忘记了,只有真正用起来了才逐渐明白这些概念,如果刚一开始接触太多概念容易让人迷惑(因为我就这样…),实践出真知嘛。 二、准备 MongoDB 数据库,点我下载 Studio 3T 可视化工具,点我下载 Node.js 环境,点我下载 说一点...

老曹的博客 1777

Express操作MongoDB【一.Express框架通过Mongoose模块操作MongoDB数据库;二.在接口中间件中使用Mongoose模块】

Express操作MongoDB【一.Express框架通过Mongoose模块操作MongoDB数据库;二.在接口中间件中使用Mongoose模块】

weixin_44892365的博客 1348

MongoDB、Mongoose使用教程

MongoDB 是一个开源基于文档的 NoSQL 数据库,使用文档导向的数据模型是一个,它以其高性能、高可用性和易扩展性而闻名,非常适合处理大量的分布式数据。它以 BSON(二进制 JSON)格式存储数据,这使得它在存储复杂数据结构时非常灵活。Mongoose 中的一切都始于结构(Schema),没有模型有一个默认 Id_id, 他是ObjectId()类型的模型(Model)是从 Schema 定义编译而来的奇特构造函数, 模型的一个实例称为 document。

前端探索者 1978

Node.js与MongoDB项目实战:使用Mongoose进行数据操作

本文还有配套的精品资源,点击获取 简介:本项目介绍了如何在Node.js应用程序中集成MongoDB数据库,使用Mongoose库进行数据操作。介绍了Node.js和MongoDB的基础知识、Mongoose的安装与连接方法、数据模型的定义与操作,以及中间件的应用和项目文件结构等。通过本项目,可以掌握Node.js使用Mongoose操作MongoDB的完整流程,包括数据的...

weixin_35749440的博客 2239

MongoBD和Mongoose

MongoBD MongoBD是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能 MongoBD 在为web应用提供可扩展的高性能数据存储解决方案 MongoBD将数据存储为一个文档,数据 结构由键值(key=&amp;amp;amp;amp;amp;amp;gt;value)对组成。MongoBD文档类似于JSON对象。字段值可以包含其他文档,数组以及文档数组。 Mon...

Carrie_zzz的博客 482

功率开关管驱动串扰(Crosstalk):深度解析与优化方案

介绍了功率开关器件驱动串扰产生机理,并整理了常见的工程应用优化措施

qq_38326420的博客 555

abaqus热力耦合模拟教程学习笔记

学习资源:BV1je4y1a7Ku软件:abaqus2016以m为单位制。

qq_41900477的博客 2万+

全面打通MongoDB+mongoose

主要教会大家安装MongoDB和配置数据库用户权限,以及node使用mongoose连接数据库。

爱勇宝 1294

详解ReID的各部分组成及Trick——基于FastReID

这一系列博客将基于京东开源的FastReID进行扩充,详细介绍了ReID的各个组成部分,一些有用的Trick,评价指标,常用数据集等,详细内容见下方的链接,总结不易,如有理解不正确之处,麻烦各位批评指正。 一、FastReID的中的baseline文件配置 二、Training strategy 三、Pre-processing 四、Backbone 五、Aggregation 六、Head 七、Loss 八、Distance Metric 九、Post-processing 十、Evaluation 十一

藏晖的博客 9165

Node.js开发入门——MongoDB与Mongoose

介绍MongoDB的安装、mongo shell使用,以及如何在Node.js中使用Mongoose来访问MongoDB……

安晓辉生涯——聚焦程序员的职业规划与成长 4万+

Unity Acceleratorc与Cache Server unity的缓存服务器

文章目录1.作用概述2.用法(使用,看这个就够了)服务端下载部署Unity Acceleratorc修改http管理端口修改Editor连接端口客户端使用(设置好一次提交设置,团队拉取即可全部生效)3.测试平台切换测试资源导入测试(打开编辑器的情况下)项目启动测试(不打开编辑器的情况下)4.不同版本表现5.服务端监控6.服务端缓存7.冲突8.预警9.不同项目/不同配置-同种资源10.缓存清除 1.作用概述 编辑器模式下,导入资源,切换平台unity都会重新识别资源,大型项目很浪费时间,使用Cache Ser

euphorias的博客 3812

MIKE水动力笔记2_水动力基础理论知识

本文所讲内容是水动力基础理论知识,所参考的主要书籍是《水动力学和水质》(第二版,季振刚著,海洋出版社)。

晏长街的博客 1万+

如何把爬取的数据存入MongoDB:thal项目Mongoose使用完整指南

很多刚接触爬虫的朋友都会遇到同一个问题:数据好不容易抓下来了,却不知道如何把爬取的数据存入MongoDB。今天这篇教程就以开源项目 **thal** 为例,完整演示如何用 Mongoose 在 Node.js 中定义数据模型、写入爬取结果、避免重复数据,并验证数据是否成功落库。整个过程无需深厚后端功底,跟着步骤操作即可跑通"爬取 → 存储"的完整链路。 ## 为什么爬虫数据适合存 MongoDB

gitblog_00793的博客 698

华为od统一考试B卷【食堂供餐】Python 实现

某公司员工食堂以盒饭方式供餐。为将员工取餐排队时间降低为0,食堂的供餐速度必须要足够快。现在需要根据以往员工取餐的统计信息,计算出一个刚好能达成排队时间为0的最低供餐速度。即,食堂在每个单位时间内必须至少做出多少份盒饭才能满足要求。

MISAYAONE的博客 8781

MongoDB(二)mongoose

MongoDB(一)_qfc_128220的博客-优快云博客 上一节介绍了MongoDB的基础用法,我们已经可以在Mongo Shell或者其他可视化数据库软件上通过手动调用命令或方法进行MongoDB数据库操作了。 MongoDB数据库驱动 但是,在真实系统中,后端服务器需要完成和数据库服务器的数据交互,即后端服务器需要通过后端程序语言来完成数据库的操作,而不是通过人工手动在Mongo Shell或者其他可视化数据库软件上完成。 此时,必然涉及到将后端服务器语言转化为MongoDB数据库能识

优快云 2470

Avalonia 超级详细学习指南

什么是 Avalonia?Avalonia 是一个开源的、跨平台的 GUI 框架,允许开发者使用 XAML 和 C# 构建现代化、高性能的桌面应用程序。与其他框架相比,Avalonia 具有强大的跨平台能力和灵活的界面设计。} }()Avalonia 的特点和优势跨平台性:Avalonia 可以在 Windows、Linux、macOS 等多个平台上运行,开发者可以编写一套代码,然后在不同的操作系统上运行相同的应用程序。

仰望星空的博客 1万+

硬件基础知识-电机知识

步进电机存在空载启动频率,所以步进电机可以低速正常运转,但若高于一定速度时就无法启动,并伴有尖锐的啸叫声;在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数。给电机两根线供电,电机就可以旋转,给正电压,电机正转,给相反电压,电机反转;电压越大,电机转得越快,电压越小,转速也变小。是一种直流电机,有刷电机的定子上安装有固定的主磁极和电刷,转子上安装有电枢绕组和换向器。控制器:使用专用的电子控制器来监测和控制电机的转速、电流和方向。线圈电流方向的交替变化是随电机转动的换相器和电刷来完成的。

weixin_46969363的博客 2296

【node学习】mongoose和mongodb在node.js使用的区别

Mongoose提供更高级别的抽象,包括数据模式和验证,适合需要管理数据关系的应用。MongoDB驱动程序提供更底层的操作,适合需要更细粒度控制和性能优化的应用。选择使用哪个库取决于具体的需求和项目复杂度。

个人博客地址为http://elikhb.top/ 1048

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MongoDB——Mongoose

一、Mongoose简介  Mongoose是一个让我们可以通过Node来操作MongoDB的模块,是一个对象文档模型(ODM),它对Node原生的MongoDB模块进行了进一步的优化封装,并提供了更多的功能。大多数情况下,Mongoose被用来把结构化的模式应用到一个MongoDB集合,并提供验证和类型转换等。简单的说它是前端开发用来操作MongoDB的一个工具,类似于后台开发使用Mybatis...

如不來的博客 661

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

使用Mongoose和MongoDB Atlas进行CRUD操作

Mongoose is one of the fundamental tools for manipulating data for a Node.js/MongoDB backend. In this article we’ll be looking into some of the basic ways of using Mongoose and even using it with the ...

578

nodejs使用mongodb和mongoose

nodejs 使用 mongodb 和 mongoose

ChaunceyQu的博客 1061

MongoDB和mongoose学习笔记

MongoDB基础学习和mongoose学习笔记 本文仅作为作者的学习过程记录。 参考资料 MongoDB 概念解析 | 菜鸟教程 (runoob.com) MongoDB CRUD操作_MonogDB 中文网 MongoDB聚合 - MongoDB-CN-Manual (mongoing.com) MongoDB是一个基于分布式文件存储的数据库。它是一个非关系数据库。 MongoDB 将数据存储为一个文档。MongoDB是一个基于分布式文件存储的数据库。 NoSQL非关系型数据库,主要指那些非关系型的

fujiaxu666的博客 1333
上一篇: 网络资源直接转存到七牛云对象存储
景洪在编程
博客等级 码龄9年 13粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值