mongoose - 让node.js高效操作mongodb
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用。
当然要使用的话,必须要先安装好环境Node.js与MongoDB =》 MongoDB安装
MongoDB是目前最流行的noSQL数据库之一,它是专为node.js而开发的,理解下与我们常用的RDBMS关系型数据库的区别就可以基本使用了
MongoDB中有三个基本的概念区别于RDBMS
- 数据库:数据库是一个物理容器集合。每个数据库都有自己的一套文件系统上的文件。一个单一的MongoDB服务器通常有多个数据库。
- 集合:集合是一组MongoDB的文档。它相当于一个RDBMS表。收集存在于一个单一的数据库。集合不执行模式。集合内的文档可以有不同的领域。通常情况下,一个集合中的所有文件是相同或相关的目的
- 文档:文档是一组键 - 值对。文件动态模式。动态模式是指,在相同集合中的文档不需要具有相同的字段或结构组的公共字段的集合的文档,可以容纳不同类型的数据。
下面给出的表显示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: ,
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: ,
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/即可
mongoose - 让node.js高效操作mongodb的更多相关文章
- MONGOOSE – 让NODE.JS高效操作MONGODB(转载)
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- node.js高效操作mongodb
node.js高效操作mongodb Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为Jav ...
- Node.js之操作Mongodb
// mongoose 链接 var mongoose = require('mongoose'); var db = mongoose.createConnection('mongodb://127 ...
- 1.从Node.js链接到MongoDB
MongoDB采用了MongoDB Node.js驱动程序作为标准. 1.安装MongoDB驱动 npm install mongoDB npm install mongoose require('m ...
- React+Node.js+Express+mongoskin+MongoDB
首发:个人博客,更新&纠错&回复 采用React + Node.js + Express + mongoskin + MongoDB技术开发的一个示例,演示地址在这里,项目源码在这里. ...
- Node.js:连接 MongoDB
ylbtech-Node.js:连接 MongoDB 1.返回顶部 1. Node.js 连接 MongoDB MongoDB是一种文档导向数据库管理系统,由C++撰写而成. 本章节我们将为大家介绍如 ...
- Node.js之操作文件系统(一)
Node.js之操作文件系统(一) 1. 同步方法与异步方法 在Node.js中,使用fs模块来实现所有有关文件及目录的创建.写入及删除操作.,在fs模块中,所有对文件及目录的操作都可以使用同步与异步 ...
- Node.js之操作文件系统(二)
Node.js之操作文件系统(二) 1.创建与读取目录 1.1 创建目录 在fs模块中,可以使用mkdir方法创建目录,该方法的使用方法如下: fs.mkdir(path,[mode],callbca ...
- 在Node.js中操作文件系统(一)
在Node.js中操作文件系统 在Node.js中,使用fs模块来实现所有有关文件及目录的创建,写入及删除操作.在fs模块中,所有对文件及目录的操作都可以使用同步与异步这两种方法.比如在执行读文件操作 ...
随机推荐
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
Jexus 是一款运行于 Linux 平台,以支持 ASP.NET.PHP 为特色的集高安全性和高性能为一体的 WEB 服务器和反向代理服务器.最新版 5.8.2 已经发布,有如下更新: 1,现在大 ...
- css-父标签中的子标签默认位置
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- 前端性能优化的另一种方式——HTTP2.0
最近在读一本书叫<web性能权威指南>谷歌公司高性能团队核心成员的权威之作. 一直听说HTTP2.0,对此也仅仅是耳闻,没有具体研读过,这次正好有两个篇章,分别讲HTTP1.1和HTTP2 ...
- ASP.NET Core 中文文档 第四章 MVC(4.6)Areas(区域)
原文:Areas 作者:Dhananjay Kumar 和 Rick Anderson 翻译:耿晓亮(Blue) 校对:许登洋(Seay) Areas 是 ASP.NET MVC 用来将相关功能组织成 ...
- Linux基础介绍【第九篇】
服务器添加3块磁盘的体系结构 [root@oldboylinux test]# free -m total used free shared buffers cached M ...
- phpstorm 配置 xdebug调试工具
前言 php是脚本型程序 每次出错都要手动exit断点程序不是很方便 哪里有需求哪里就有生产,Xdebug可以实现对php的断点调试.下面将我个人的安装经历分享给大家. 运行环境 windows ...
- 【python之路3】if 语句
1.if语句用法(if....else....) #!/usr/bin/env python # -*- coding:utf-8 -*- my_name = raw_input("plea ...
- spring boot1
spring boot 玩转spring boot--快速开始 开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv ...