zoukankan      html  css  js  c++  java
  • 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"}

  • 相关阅读:
    mysql 查询当天、本周,本月,上一个月的数据
    Mysql 查看连接数,状态 最大并发数,以及设置连接数
    MySQL慢查询日志优化
    java中线程通信(传统的线程通信)
    java中死锁
    同步锁(lock)
    同步锁(lock)
    释放同步监视器的锁定(java疯狂讲义)
    linux第9天 UDP
    linux第8天 connect强化
  • 原文地址:https://www.cnblogs.com/y-yxh/p/5689555.html
Copyright © 2011-2022 走看看