Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为javaScript对象以供你在应用中使用。
当然要使用的话,必须要先安装好环境Node.js与MongoDB =》MongoDB安装
MongoDB是目前最流行的noSQL数据库之一,它是专为node.js而开发的,理解下与我们常用的RDBMS关系型数据库的区别就可以基本使用了.
MongoDB中有三个基本的概念区别于RDBMS:
下面给出的表显示RDBMS术语使用 MongoDB 的关系
观察下最重要的一点就是我们关系数据库中的表与字段被合集与文档的概念给替代了,Mongo不在具有主键的关系了,数据保存都是放在文档中用JSON风格键值对风格的文件形式存放
详细了解可以异步MongoDB资料汇总专题
1. 连接数据库
var mongoose = require("mongoose");// 连接字符串格式为mongodb://主机/数据库名mongoose.connect('mongodb://localhost/test');
这里没太多好解释的,安装mongoose后,引入模块连接到本地的mongodb的test表,这里要注意了,mongo数据库是运行状态
2. 存储数据
// var Schema = mongoose.Schema;// var userSchema = new Schema({});
//这种写法有点类似 object = Object();返回的也是对象//usersschema = mongoose.Schema;
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这个过程
/*var Schema = mongoose.Schema;//骨架模版var movieSchema = new Schema({ doctor : String, title : String, language : String, country : String, year : Number, summary : String, poster : String, flash : String})*///通过model直接建立关系型模型var Movie = mongoose.model('Movie', { doctor : String, title : String, language : String, country : String, year : Number, summary : String, poster : String, flash : String});//存储数据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)在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方法将它存储到了集合
修改数据
//存储数据var moive = new Movie({});//更新数据
moive.update({_id: oneUser._id}, { $set: {name: oneUser.name,passWord:oneUser.password}}, function(err) { if(err){ console.log(err) return } console.log('更新成功')});
删除数据
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 – 让NodeJS更容易操作Mongodb数据库:http://floss.zoomquiet.io/data/20110718215356/index.html
http://hao.jser.com/archive/7767/
express+mongoose :http://qianduanblog.com/post/nodejs-learning-7-express-mongoose.html
nodejs:http://qianduanblog.com/category/nodejs/
mongoose简易教程:http://www.qdkf.net/mongoose.html
http://jerrylee.me/blog/post/cong-tou-kai-shi-yong-nodejs-he-mongoDB-tu-shou-da-jian-Blog%EF%BC%88-er-%EF%BC%89
新闻热点
疑难解答