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();
});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏浪淘沙

HDFS基本操作

一、hadoop搭建     1、修改主机名     2、ip等     3、主机映射     4、关闭防火墙(两种)     5、ssh免密登录(免...

895
来自专栏潇涧技术专栏

Lint Tool Analysis (2)

本系列的几篇源码分析文档意义不大,如果你正好也在研究lint源码,或者你想知道前面自定义lint规则中提出的那几个问题,抑或你只是想大致了解下lint的源码都有...

781
来自专栏salesforce零基础学习

salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现

项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等。这种...

1727
来自专栏一个会写诗的程序员的博客

Spring Boot 使用 Kotlin Script Template 模板引擎kts 开发web

在 Spring Framework 5.0 M4 中引入了一个专门的Kotlin支持。

832
来自专栏Laoqi's Linux运维专列

python3–内置模块Ⅱ

4118
来自专栏一个会写诗的程序员的博客

8.3 Spring Boot集成Scala混合Java开发参考资料

本章我们使用Spring Boot集成Scala混合Java开发一个Web性能测试平台。

731
来自专栏Albert陈凯

Hadoop数据分析平台实战——260用户数据ETL离线数据分析平台实战——260用户数据ETL

离线数据分析平台实战——260用户数据ETL ETL目标 解析我们收集的日志数据,将解析后的数据保存到hbase中。 这里选择hbase来存储数据的主要原因就...

3996
来自专栏向治洪

动态补丁升级

一、概述 最新github上开源了很多热补丁动态修复框架,大致有: https://github.com/dodola/HotFix https://git...

2619
来自专栏一个会写诗的程序员的博客

《Spring Boot极简教程》第9章 Spring Boot集成Scala混合Java开发参考资料

本章我们使用Spring Boot集成Scala混合Java开发一个Web性能测试平台。

1052
来自专栏实战docker

Docker下HBase学习,三部曲之三:java开发

前两章《Docker下HBase学习,三部曲之一:极速体验》和《Docker下HBase学习,三部曲之二:集群HBase搭建》我们学习了HBase的单机和集群环...

4116

扫码关注云+社区