mongoose - 让node.js高效操作mongodb

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. 连接数据库

var mongoose = require("mongoose");

// 连接字符串格式为mongodb://主机/数据库名
mongoose.connect(‘mongodb://localhost/test‘);

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

2. 存储数据

var Schema = mongoose.Schema;
//骨架模版
var movieSchema = new Schema({
    doctor   : String,
    title    : String,
    language : String,
    country  : String,
    year     : Number,
    summary  : String,
    poster   : String,
    flash    : String
})
//模型
var Movie = mongoose.model(‘Movie‘, movieSchema);
//存储数据
var moive = new Movie({
    title: ‘黑衣人三‘,
    doctor: ‘史密斯‘,
    year: 2018,
    flash: ‘http://player.youku.com/player.php/sid/XNjA1Njc0NTUy/v.swf‘,
    country: ‘美国‘,
    language: ‘英语‘,
    summary: ‘好片‘
})
//保存数据库
moive.save(function(err) {
    if (err) {
        console.log(‘保存失败‘)
        return;
    }
    console.log(‘meow‘);
});

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

流程就是:通过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有许多内置的实例方法. 可以直接执行增删改查操作

增加数据

//模型
var Movie = mongoose.model(‘Movie‘, movieSchema); 
var moive = new Movie({
    title: ‘黑衣人三‘,
    doctor: ‘史密斯‘,
    year: 2018,
    flash: ‘http://player.youku.com/player.php/sid/XNjA1Njc0NTUy/v.swf‘,
    country: ‘美国‘,
    language: ‘英语‘,
    summary: ‘好片‘
})
//保存数据库
moive.save(function(err) {
    if (err) {
        console.log(‘保存失败‘)
        return;
    }
    console.log(‘meow‘);
});

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

修改数据

User.update({_id: oneUser._id}, {
    $set: {name: oneUser.name,password:oneUser.password}
}, function(err) {
    if(err){
        console.log(err)
        return
    }
    console.log(‘更新成功‘)
});

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

删除数据

User.remove({
    _id: id
}, function(err) {
    if (err) {
        console.log(err)
        return
    }
    console.log(‘删除成功‘)
});

简单的数据库的连接,跑通了整个流程,具体的可以查看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/即可

时间: 2024-10-09 10:32:36

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

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

Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. 当然要使用的话,必须要先安装好环境Node.js与MongoDB => MongoDB安装 MongoDB是目前最流行的noSQL数据库之一,它是专为node.js而开发的,理解下与我们常用的RDBMS关系型数据库的区别就可以基本使用了. MongoDB中有三个基本的概念区别于RDBMS: 数据库

node.js高效操作mongodb

node.js高效操作mongodb Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. 当然要使用的话,必须要先安装好环境Node.js与MongoDB => MongoDB安装 MongoDB是目前最流行的noSQL数据库之一,它是专为node.js而开发的,理解下与我们常用的RDBMS关系型数据库的区别就可以基本使用了 MongoDB中有三个

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

为了保存网站的用户数据和业务数据,通常需要一个数据库.MongoDB和Node.js特别般配,因为MongoDB是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储的,增删改查等管理数据库的命令和JavaScript语法很像.如果你在Node.js里访问MongoDB的数据,会有我们是一家人的感觉,特别亲切. 我也准备使用MongoDB来作为我的数据库. MongoDB使用集合(collection)和文档(document)来描述和存储数据,collection就相当

Node.js入门—用MongoDB改造LoginDemo

这次的示例基于之前的LoginDemo(见使用cookie保持登录),我们引入MongoDB来保存用户数据.要运行这个示例,前提是MongoDB数据要正常运行(见Node.js开发入门--MongoDB与Mongoose).示例运行的结果呢,和之前的LoginDemo是一样一样的.因此,我们就只分析引入数据库时项目本身的变化吧. 安装mongoose 命令行环境下导航到LoginDemo目录,执行下面的命令: npm install mongoose --save 它会自动帮我们安装依赖,也会把

Node.js中使用MongoDB

MongoDB是一个通用型的NoSQL,在很多地方得到了广泛的应用.接下来我们看如何在Node.js中使用MongoDB数据库. 1.环境安装 首先从MongoDB官网中下载.安装,配置好环境变量,保证mongod命令可以顺利启动.然后利用npm install mongodb安装MongoDB模块. 2.启动数据库 我们在命令行输入mongod命令,启动数据库.MongoDB默认绑定端口27017,要防止其他应用占用了这个端口,导致数据库无法启动.当数据库成功启动后,会出现OK提示语,如下图所

安装使用Mongoose配合Node.js操作MongoDB的基础教程【转载】

这篇文章主要介绍了安装使用Mongoose来让Node.js操作MongoDB的基础教程,前端js+后端node+js操作MongoDB正是所谓最流行的一种JavaScript全栈开发方案,需要的朋友可以参考下 安装mongoose 使用express准备一个TestMongoDB项目,命令序列如下: express TestMongoDB cd TestMongoDB npm install 执行完上面的命令后,使用下面的命令安装mongoose: npm install mongoose -

[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist

promise主要是用来解决异步回调问题,其实还有好几种比promise更好的方案,后面再说,这节,我们先用promise来改造下,我以前写的一篇文章[js高手之路]javascript腾讯面试题学习封装一个简易的异步队列 中的一道面试题( 页面上有一个按钮,一个ul,点击按钮的时候,每隔1秒钟向ul的后面追加一个li, 一共追加10个,li的内容从0开始技术( 0, 1, 2, ....9 ) ). promise的小实例: 1 function next1(){ 2 return new P

node.js(express)连接mongoDB入门指导

一.写在前面 人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了.前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路. 二.安装node.js 接触过后端开发的人都知道,首先要安装服务.作为新手,肯定是选择最简单的可视化安装了(傻瓜式下一步,其它的方式等熟悉相关操作后自然就会了的),通过官网http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi 下载电脑适配的安装包(这个是windo

[MEAN Stack] First API with Node.js, Express and MongoDB

Learn how to import data into your MongoDB and then use Express to serve a simple Node.js API. Import data into MongoDB: For exmaple, you have an data.json file and contains some data. 1. Start Mongod service: //in the cmd $ mongod 2. Open a new Tab,