Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用。

当然要使用的话,必须要先安装好环境Node.js与MongoDB =》 MongoDB安装

MongoDB是目前最流行的noSQL数据库之一,它是专为node.js而开发的,理解下与我们常用的RDBMS关系型数据库的区别就可以基本使用了

MongoDB中有三个基本的概念区别于RDBMS

  1. 数据库:数据库是一个物理容器集合。每个数据库都有自己的一套文件系统上的文件。一个单一的MongoDB服务器通常有多个数据库。
  2. 集合:集合是一组MongoDB的文档。它相当于一个RDBMS表。收集存在于一个单一的数据库。集合不执行模式。集合内的文档可以有不同的领域。通常情况下,一个集合中的所有文件是相同或相关的目的
  3. 文档:文档是一组键 - 值对。文件动态模式。动态模式是指,在相同集合中的文档不需要具有相同的字段或结构组的公共字段的集合的文档,可以容纳不同类型的数据。

下面给出的表显示RDBMS术语使用 MongoDB 的关系

观察下最重要的一点就是我们关系数据库中的表与字段被合集与文档的概念给替代了,Mongo不在具有主键的关系了,数据保存都是放在文档中用JSON风格键值对风格的文件形式存放

详细了解可以异步  MongoDB资料汇总专题


Mongoose中的操作流程

1. 连接数据库

  1. var mongoose = require("mongoose");
  2.  
  3. // 连接字符串格式为mongodb://主机/数据库名
  4. mongoose.connect('mongodb://localhost/test');

这里没太多好解释的,安装mongoose后,引入模块连接到本地的mongodb的test表,这里要注意了,mongo数据库是运行状态

2. 存储数据

  1. var Schema = mongoose.Schema;
  2. //骨架模版
  3. var movieSchema = new Schema({
  4. doctor : String,
  5. title : String,
  6. language : String,
  7. country : String,
  8. year : Number,
  9. summary : String,
  10. poster : String,
  11. flash : String
  12. })
  13. //模型
  14. var Movie = mongoose.model('Movie', movieSchema);
  15. //存储数据
  16. var moive = new Movie({
  17. title: '黑衣人三',
  18. doctor: '史密斯',
  19. year: ,
  20. flash: 'http://player.youku.com/player.php/sid/XNjA1Njc0NTUy/v.swf',
  21. country: '美国',
  22. language: '英语',
  23. summary: '好片'
  24. })
  25. //保存数据库
  26. moive.save(function(err) {
  27. if (err) {
  28. console.log('保存失败')
  29. return;
  30. }
  31. console.log('meow');
  32. });

以上是最简单的数据操作了

流程就是:通过Schema创建一个模式movieSchema ,通过模式movieSchema创建一个模型Movie,通过模型Movie写入数据,通过save方法保存

定义schema->创建model->实例化方法

表 –》 合集 –》 文档

这里涉及几个名词概念Schema与Model

3.Schema与Model

  • Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
  • Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对

虽然模式(Schema)在MongoDB的存储中并不是必须的,但是一般来说为了文档的整齐一致我们在Mongoose中还是会用到模式。可以说,Mongoose中的一切都从定义模式开

不像传统的关系型数据库一样,比如mysql,连接好数据后直接有把sql语句丢到一个指定的方法中就执行了,这里会有Schema的抽象概念

Schema它类似于关系数据库的表结构,可以理解为数据库模型骨架

Schema可以看作工厂中模具一样,好比一个茶杯,喝水是茶杯最终的功能,茶杯本身就像是Model,那么茶杯的批量生产是需要靠工厂的模具成型的,这就像是Schema了

Schema不仅定义了文档结构和使用性能,还可以有扩展插件、实例方法、静态方法、复合索引、文档生命周期钩子

4. CURD操作

Model可以看到关系型数据库中的表,那么通过new Model出来的实例document文档对应的则是关系数据库中表的一行记录

document有许多内置的实例方法. 可以直接执行增删改查操作

增加数据

  1. //模型
  1. var Movie = mongoose.model('Movie', movieSchema);
  1. var moive = new Movie({
  2. title: '黑衣人三',
  3. doctor: '史密斯',
  4. year: ,
  5. flash: 'http://player.youku.com/player.php/sid/XNjA1Njc0NTUy/v.swf',
  6. country: '美国',
  7. language: '英语',
  8. summary: '好片'
  9. })
  10. //保存数据库
  11. moive.save(function(err) {
  12. if (err) {
  13. console.log('保存失败')
  14. return;
  15. }
  16. console.log('meow');
  17. });

在这里我们通过对模型Movie实例化生成了一个叫moive的文档,并使用save方法将它存储到了集合

修改数据

  1. User.update({_id: oneUser._id}, {
  2. $set: {name: oneUser.name,password:oneUser.password}
  3. }, function(err) {
  4. if(err){
  5. console.log(err)
  6. return
  7. }
  8. console.log('更新成功')
  9. });

更新的数据比较少用$set,可用性还是很好

删除数据

  1. User.remove({
  2. _id: id
  3. }, function(err) {
  4. if (err) {
  5. console.log(err)
  6. return
  7. }
  8. console.log('删除成功')
  9. });

简单的数据库的连接,跑通了整个流程,具体的可以查看API

Mongoose API : http://mongoosejs.com/docs/api.html

附上git上mongoose的一个简单的测试案例

https://github.com/JsAaron/node_movie/tree/master/data

支持增加、修改、删除数据

win平台安装:

1. 首先要安装好MongoDB安装

2. 进入目录,通过npm install 安装模块依赖、grunt、mongoose、express、jade

3. 执行命令grunt,自动检测文件改动重启服务

4. 打开http://localhost:3000/即可

mongoose - 让node.js高效操作mongodb的更多相关文章

  1. MONGOOSE – 让NODE.JS高效操作MONGODB(转载)

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  2. node.js高效操作mongodb

    node.js高效操作mongodb Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为Jav ...

  3. Node.js之操作Mongodb

    // mongoose 链接 var mongoose = require('mongoose'); var db = mongoose.createConnection('mongodb://127 ...

  4. 1.从Node.js链接到MongoDB

    MongoDB采用了MongoDB Node.js驱动程序作为标准. 1.安装MongoDB驱动 npm install mongoDB npm install mongoose require('m ...

  5. React+Node.js+Express+mongoskin+MongoDB

    首发:个人博客,更新&纠错&回复 采用React + Node.js + Express + mongoskin + MongoDB技术开发的一个示例,演示地址在这里,项目源码在这里. ...

  6. Node.js:连接 MongoDB

    ylbtech-Node.js:连接 MongoDB 1.返回顶部 1. Node.js 连接 MongoDB MongoDB是一种文档导向数据库管理系统,由C++撰写而成. 本章节我们将为大家介绍如 ...

  7. Node.js之操作文件系统(一)

    Node.js之操作文件系统(一) 1. 同步方法与异步方法 在Node.js中,使用fs模块来实现所有有关文件及目录的创建.写入及删除操作.,在fs模块中,所有对文件及目录的操作都可以使用同步与异步 ...

  8. Node.js之操作文件系统(二)

    Node.js之操作文件系统(二) 1.创建与读取目录 1.1 创建目录 在fs模块中,可以使用mkdir方法创建目录,该方法的使用方法如下: fs.mkdir(path,[mode],callbca ...

  9. 在Node.js中操作文件系统(一)

    在Node.js中操作文件系统 在Node.js中,使用fs模块来实现所有有关文件及目录的创建,写入及删除操作.在fs模块中,所有对文件及目录的操作都可以使用同步与异步这两种方法.比如在执行读文件操作 ...

随机推荐

  1. ASP.NET Core MVC/WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  2. setAttribute()

    ●节点分为不同的类型:元素节点.属性节点和文本节点等.   ●getElementById()方法将返回一个对象,该对象对应着文档里的一个特定的元素节点.   ●getElementsByTagNam ...

  3. CorelDRAW X8 如何破解激活(附国际版安装包+激活工具) 2016-12-15

    之前有位搞平面的好友“小瘦”说CDR X8无法破解,只能用X7.呃……呃……呃……好像是的 其实CDR8难激活主要在于一个点“没有离线激活了,只可以在线激活”,逆天不是专供逆向的,当然没能力去破解,这 ...

  4. Android数据加密之MD5加密

    前言: 项目中无论是密码的存储或者说判断文件是否是同一文件,都会用到MD5算法,今天来总结一下MD5加密算法. 什么是MD5加密? MD5英文全称“Message-Digest Algorithm 5 ...

  5. springMVC初探--环境搭建和第一个HelloWorld简单项目

    注:此篇为学习springMVC时,做的笔记整理. MVC框架要做哪些事情? a,将url映射到java类,或者java类的方法上 b,封装用户提交的数据 c,处理请求->调用相关的业务处理—& ...

  6. 《LoadRunner12七天速成宝典》签售会2016-12-17北京

    报名地址: http://www.after615.com/actives/s?id=3141&time=1480042829608&sign=9ac8e25e9ab3cf57f613 ...

  7. 【转】Android开发中让你省时省力的方法、类、接口

    转载 http://www.toutiao.com/i6362292864885457410/?tt_from=mobile_qq&utm_campaign=client_share& ...

  8. 在将 varchar 值 'xinpian' 转换成数据类型 int 时失败?

    把int类型的值修改为varchar类型的值

  9. PC虚拟现实应用的性能分析与优化:从CPU角度切入

    如今,虚拟现实 (VR) 技术正日益受到欢迎,这主要得益于遵循摩尔定律的技术进步让这一全新体验在技术上成为可能.尽管虚拟现实能给用户带来身临其境般的超凡体验,但相比传统应用,其具有双目渲染.低延迟.高 ...

  10. BZOJ 2756: [SCOI2012]奇怪的游戏 [最大流 二分]

    2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 3352  Solved: 919[Submit][Stat ...