mongoose学习文档

名词解释

  • 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"}

时间: 2024-10-24 05:58:45

mongoose学习文档的相关文章

mfc学习---文档视图架构

MFC的AppWizard可以生成三种类型的应用程序:基于对话框的应用.单文档应用(SDI)和多文档应用(MDI). 一般情况下,采用文档/视结构的应用程序至少应由以下对象组成:       1.应用程序是一个CwinApp派生对象,它充当全部应用程序的容器.应用程序沿消息映射网络分配消息给它的所有子程序.       2.框架窗口是一CfrmeWnd派生对象.       3.文档是一个CDocument派生对象,它存储应用程序的数据,并把这些信息提供给应用程序的其余部分.       4.视

NodeJS-001-Nodejs学习文档整理(转-出自http://www.cnblogs.com/xucheng)

Nodejs学习文档整理 http://www.cnblogs.com/xucheng/p/3988835.html 1.nodejs是什么: nodejs是一个是javascript能在后台运行的平台,具体来时只是使code javascript能在后台运行,因为不在浏览器中运行所以不涉及到document等对象.(Mozilla 则指出 JavaScript 由Core JavaScript 和 Client JavaScript 组成.) 2.nodejs如何运行javascript: n

Openstack python api 学习文档

Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack,所以上一篇写了一些使用openstack的纯api调用的方法, 但是openstack还提供了更好的python的api,只需要python的包即可,感觉更好使用. 对于compute的api,包是放在了/usr/lib/python2.7/site-packages/novaclient/目录,

Activit最入门学习文档,从如何创建项目开始共20章,看完,任何Java项目集成无压力

Activit流程引擎 本人水平,刚自学java一个多月,然后看视频做的笔记,全部傻瓜式截图教程,反正我学习之前没在网上搜索到任何小白教程, Activit官方的教程真心看不懂,因为都是文字 没具体创建步奏,所以对新手来说很无奈, 然后吧,就把自己的学习经验贡献出来啦 最小白的文档,看完之后,集成到任何java项目中都无压力,我最后的是做了个Jfinal集成,估计这是网上搜到最全的容易懂的入门学习文档,本人自学java一个月,反正我看官方例子什么的都看不懂,然后各搜素也没收到教程视频,还好有别人

solr学习文档之高亮

在<solr学习文档之添加分词词库>一文中,我们学习了如何对一个词组进行分词提取,这一章我们将会使用到分词词库,并介绍如何进行高亮展现 在此之前,我们先了解一下高亮的几个参数 hl:是否开启高亮组件,true为开启,false为不开启 hl.fl:需要开启的高亮字段,多个可用逗号隔开 hl.simple.pre:高亮字段前缀 hl.simple.post:高亮字段后缀 (其他的暂不介绍,想知道的可自行百度) 想要进行高亮站下,需要在schema.xml中将你的字段名(如topicContent

2013 最新的 play web framework 版本 1.2.3 框架学习文档整理

Play framework框架学习文档 Play framework框架学习文档 1 一.什么是Playframework 3 二.playframework框架的优点 4 三.Play FrameWork开发入门 5 1.准备工作 5 2.新建项目 5 3.环境变量配置 7 4.MVC模型 8 app/controllers 9 app/models 9 app/views 9 5.应用程序布局 9 app目录 9 .class文件在哪儿? 9 public目录 10 conf目录 10 l

Windows Workflow学习文档

Windows Workflow学习文档   1     概念 2     Windows Workflow 2.1      .Net Framework 3.0 简介 2.2      Windows Workflow Foundation简介 3     开发环境搭建 4     Workflow模型 4.1      WF中流程模型 4.2      关键概念 5     Activity 5.1      什么是Activity 5.2      Activity的其他概念 5.3  

Mybatis学习文档

Mybatis学习文档 Mybatis是持久层框架类似于Hibernate的orm持久层框架 1.JDBC访问数据库存在的问题 频繁创建和打开.关闭数据链接,太消耗资源 Sql语句存在硬编码,不利于维护 Sql参数设置硬编码,不利于维护 结果集获取与遍历复杂,存在硬编码,不利于维护,期望查询后返回一个java对象 2.Mybatis介绍 前身是apache下的开源项目,2010有aspache software foundation 迁移到了google code ,并且改名为Mybatis,2

libevent学习文档(三)working with event

Events have similar lifecycles. Once you call a Libevent function to set up an event and associate it with an event base, it becomes initialized. At this point, you can add, which makes it pending in the base. When the event is pending, if the condit