zoukankan      html  css  js  c++  java
  • mongodb操作之mongoose

    /**
     * Created by chaozhou on 2015/10/6.
     */
    var mongoose = require("mongoose");
    var db = mongoose.createConnection("127.0.0.1", "cms");
    
    //链接错误监听
    db.on("error", function (error) {
        console.log(error);
    });
    
    //Schema结构
    var userSchema = new mongoose.Schema({
        userName: {type: String, default: '匿名用户'},
        trueName: mongoose.Schema.Types.String,
        title: {type: String},
        content: {type: String},
        time: {type: Date, default: Date.now()},
        age: {type: Number}
    });
    
    //添加实例方法
    userSchema.methods.findByUserName = function (userName, callBack) {
        return this.model("user").find({userName: userName}, callBack);
    };
    
    //添加静态方法,静态方法在model层就能使用
    userSchema.statics.findByTitle = function (title, callBack) {
        return this.model("user").find({title: title}, callBack);
    };
    
    //model层
    var userModel = db.model("user", userSchema);
    
    //entity层
    var doc = {userName: 'entity_demo_username', title: 'entity_demo_title', content: 'entity_demo_content'};
    var userEntity = new userModel(doc);
    //添加记录,基于entity的操作方式
    userEntity.save(function (err) {
        if (err) {
            console.log(err);
        } else {
            console.log("saved ok");
        }
    });
    
    //增加记录,基于model的操作方式
    var doc2 = {username: 'model_demo_username', title: 'model_demo_title', content: 'model_demo_content'};
    userModel.create(doc2, function (err) {
        if (err) {
            console.log(err);
        } else {
            console.log("saved ok");
        }
        db.close(); //关闭数据库链接
    });
    
    //修改记录,args:conditions, update, options, callback
    userModel.update({userName: 'model_demo_username'}, {
        $set: {
            age: 27,
            title: 'model_demo_title_update'
        }
    }, {upsert: false}, function (err) {
        if (err) {
            console.log(err);
        } else {
            console.log("update ok");
        }
        db.close();
    });
    
    //查询,基于实例方法的查询
    userEntity.findByUserName('model_demo_username', function (err, result) {
        if (err) {
            console.log(err);
        } else {
            console.log(result);
        }
        db.close();
    });
    
    //查询,基于静态方法的查询
    userModel.findByTitle('model_demo_title', function (err, result) {
        if (err) {
            console.log(err);
        } else {
            console.log(result);
        }
        db.close();
    });
    
    //查询,args:criteria, fields, options, callBack
    userModel.find({title: 'entity_demo_title'}, {title: 1, content: 1, time: 1}, function (err, result) {
        if (err) {
            console.log(err);
        } else {
            console.log(result);
        }
        db.close();
    });
    
    //删除记录
    userModel.remove({userName: 'entity_demo_username'}, function (err, result) {
        if (err) {
            console.log(err);
        } else {
            console.log('delete ok');
        }
        db.close();
    });
  • 相关阅读:
    【bzoj2724】[Violet 6]蒲公英 分块+STL-vector
    【bzoj4026】dC Loves Number Theory 可持久化线段树
    【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
    【bzoj3166】[Heoi2013]Alo 可持久化Trie树+STL-set
    【bzoj3060】[Poi2012]Tour de Byteotia 并查集
    【bzoj3510】首都 LCT维护子树信息(+启发式合并)
    【bzoj4530】[Bjoi2014]大融合 LCT维护子树信息
    【bzoj3261】最大异或和 可持久化Trie树
    【bzoj2081】[Poi2010]Beads Hash
    【bzoj4260】Codechef REBXOR Trie树
  • 原文地址:https://www.cnblogs.com/vipzhou/p/4857631.html
Copyright © 2011-2022 走看看