mongoose学习文档
名词解释
Schema: 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力Model: 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
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"}
mongoose学习文档的更多相关文章
- Openstack api 学习文档 & restclient使用文档
Openstack api 学习文档 & restclient使用文档 转载请注明http://www.cnblogs.com/juandx/p/4943409.html 这篇文档总结一下我初 ...
- 2013 最新的 play web framework 版本 1.2.3 框架学习文档整理
Play framework框架学习文档 Play framework框架学习文档 1 一.什么是Playframework 3 二.playframework框架的优点 4 三.Play Frame ...
- Openstack python api 学习文档 api创建虚拟机
Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...
- .Net 官方学习文档
.Net 官方学习文档:https://docs.microsoft.com/zh-cn/dotnet/articles/welcome
- soapUI学习文档(转载)
soapUI 学习文档不是前言的前言记得一个搞开发的同事突然跑来叫能不能做个WebService 性能测试,当时我就凌乱了,不淡定啊,因为我是做测试的,以前连WebService 是什么不知道,毕竟咱 ...
- NodeJS-001-Nodejs学习文档整理(转-出自http://www.cnblogs.com/xucheng)
Nodejs学习文档整理 http://www.cnblogs.com/xucheng/p/3988835.html 1.nodejs是什么: nodejs是一个是javascript能在后台运行的平 ...
- Ext JS 6学习文档-第8章-主题和响应式设计
Ext JS 6学习文档-第8章-主题和响应式设计 主题和响应式设计 本章重点在 ExtJS 应用的主题和响应式设计.主要有以下几点内容: SASS 介绍和入门 主题 响应式设计 SASS 介绍和入门 ...
- Ext JS 6学习文档-第7章-图表
Ext JS 6学习文档-第7章-图表 使用图表 本章中将探索在 ExtJS 中使用不同类型的图表并使用一个名为费用分析的示例项目结束本章所学.以下是将要所学的内容: 图表类型 条形图 和 柱形图 图 ...
- Ext JS 6学习文档-第6章-高级组件
Ext JS 6学习文档-第6章-高级组件 高级组件 本章涵盖了高级组件,比如 tree 和 data view.它将为读者呈现一个示例项目为 图片浏览器,它使用 tree 和 data view 组 ...
随机推荐
- display:inline 和display:inline-block和display:block的区别
之前讲过块级元素使用display:block 行内元素使用display:inline 那么今天我们就来区分一下display:inline,display:inline-block和display ...
- CentOS 下 rpm包与 yum 安装与卸载
rpm包的安装: 1.安装一个包 # rpm -ivh 2.升级一个包 # rpm -Uvh 3.移走一个包 # rpm -e 4.安装参数 --force 即使覆盖属于其它包的文件也强迫安 ...
- shell变量赋值 不能有空格的原因
典型例子: a=date echo $a 成立 a =date echo $a 不成立 其实原因很简单 shell在解释命令时的原则是第一个符号标记只能是程序或者命令,有空格的时候第 ...
- JS如何判断包括IE11在内的IE浏览器 <转载>
今天碰到一个奇怪的问题,有一个页面,想指定用IE浏览器打开,在VS开发环境没有问题,但部署到服务器上,即使是用IE打开页面,还是提示“仅支持IE”,真是晕啊!! 判断是否IE浏览器用的是window. ...
- iOS开发Swift篇—(五)元组类型
iOS开发Swift篇—(五)元组类型 一.元组类型介绍 1.什么是元组类型 元组类型由 N个 任意类型的数据组成(N >= 0),组成元组类型的数据可以称为“元素” 示例: let posit ...
- 【jQuery】serializeArray()与serialize()的区别
serialize()序列化表单元素为字符串,用于 Ajax 请求. serializeArray()序列化表单元素为JSON数据. 具体实例如下: 1 <!DOCTYPE html PUBLI ...
- Selenium - CSS Selector
Selenium - CSS Selector http://www.cnblogs.com/bugua/archive/2012/08/16/2641647.html 昨天我练习了用CSS(即层 ...
- spirng线程池的配置与使用
1.在xml中配置线程池 <!-- 配置线程池 --> <bean id="taskExecutor" class="org.springframewo ...
- libdispatch for Linux
这个Dispatch是苹果的一个高效的处理库,它在ubuntu上的安装如下: Build/Runtime Requirements 如下: libBlocksRuntime libpthread_wo ...
- EF 自定义校验设置和捕获异常
一.定义 public class MyItem: IValidatableObject { [Key] public long Id { get; set; } [Range(0, 100, Err ...