mongoose学习文档
2016-07-20 20:06
288 查看
名词解释
Schema: 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
Model: 由
Schema发布生成的模型,具有抽象属性和行为的数据库操作对
来自cnode社区
1.创建一个本地数据库并连接:
var mongoose = require('mongoose'); //获取mongoose模块 mongoose.connect('mongodb://localhost/nodejs'); //使用mongoose对象的connect方法连接数据库nodejs
2.定义数据库文档类型:
对于mongoose,一切行为都要源自
Schema(模型),所以下面,就是要声明和定义Schema了:
var Schema = mongoose.Schema; var MovieSchema = new Schema({ name : String, alias: [String], publish: Date, create_date:{type: Date,default: Date.now}, image:{ coverSmall: String, coverBig:String }, source:[{ source: String, link:String, swfLink:String, quality:String, version:String, lang:String, subtitle:String, create_date:{type: Date,default: Date.now} }] });
变量名可以随便取,这里将mongoose的属性Schema赋值给Schema变量,然后通过Schema新建一个对象,这个对象决定了数据库中文档的形状(格式)
3.将Schema发布为Model:
var Movie = mongoose.model("Movie",MovieSchema); var MovieDAO = function(){}; module.exports = new MovieDAO();
定义一个变量接收发布的model,参数里面的Movie是数据库里面的集合(例如上面数据库为nodejs,这里movie就是nodejs里面的集合),不过貌似mongoose不区分大小写,这里是Movie,而查看数据库则是movie。
第二行代码定义一个空对象,第三行代码引出这个空对象的一个实例,下面就要给这个空对象添加方法了。
4.给model添加增、改、查
1)新增
新增一个文档,我们必须先实例化一个文档(上面的Movie):
MovieDAO.prototype.save = function(obj, callback) { var instance = new Movie(obj); instance.save(function(err){ callback(err); }); };
save方法传入一个obj对象,这个对象用于实例化Movie,实例化的对象赋值给instance,这样instance就是一个真实存在的文档,也拥有了Movie的所有方法,接着就可以使用save(官方API,我们只需关心回调函数就可以了)来插入文档了。
2)查询
MovieDAO.prototype.findByName = function(name,callback){ Movie.findOne({name:name},function(err,obj){ callback(err,obj); }); };
这里以name字段来查询
3)更新
MovieDAO.prototype.updateData = function(name,set,callback){ Movie.update({name:name},set,function(err){ callback(err); }); };
这里以name字段作为查询条件,以set作为更新数据,如{name:"shenzhen"}
相关文章推荐
- django 扩展User
- 配置go服务器
- Mongoose学习参考文档——基础篇
- HDU 4722 Good Numbers(数位DP)
- KMP算法的思考
- Educational Codeforces Round 5 D. Longest k-Good Segment(双指针)
- 关于Django ORM filter方法小结
- codeforces水题100道 第六题 Yandex.Algorithm 2011 Qualification 2 A. Double Cola (math)
- Exactly one month ago
- Web开发之Django框架的学习
- Golang在视频直播平台的高性能实践(含PPT下载)
- golang x/net/context包笔记
- Go 辅助工具
- 【Google Protobuf】protobuf的使用(二)
- Golang string处理
- Django缓存机制
- log4j root 和 category (logger)关系
- 替换hosts使用google搜索
- Yandex.Algorithm 2011 Round 1 D. Sum of Medians 线段树
- MangoDB 实例