文档章节

mongodb操作之mongoose

c
 caiyezi
发布于 2016/11/08 20:24
字数 318
阅读 3
收藏 0
/**
 * 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();
});

 

本文转载自:http://www.cnblogs.com/vipzhou/p/4857631.html

共有 人打赏支持
c
粉丝 1
博文 108
码字总数 0
作品 0
西安
程序员
私信 提问
Mongoose,nodejs和mongodb的连接器。

简介 今天我们将学习Mongoose,什么是Mongoose呢,它于MongoDB又是什么关系呢,它可以用来做什么呢,介绍Mongoose之前,我们先简单了解一下MongoDB。 MongoDB是一个开源的NoSQL数据库,相比M...

笔阁
2015/10/13
2.2K
0
Node.JS -- Mongoose 快速入门

Mongoose时一个用于异步环境的MongoDB的对象模型。 前提条件 先确保本地已经安装了Node.js和一个可以连接上的MongoDB。 安装Mongoose Mongoose和其他的依赖模块一样安装,使用npm 命令: 连接...

米阳MeYoung
2018/06/04
0
0
MongooseJS 4.0.5 发布,MongonDB 连接包

MongooseJS 4.0.5 发布,此版本更新内容如下: fixed; ObjectIds and buffers when mongodb driver is a sibling dependency #3050 #3048 #3040 #3031 #3020 #2988 #2951 fixed; warn user ......

oschina
2015/06/07
1K
2
MongooseJS 4.1.3 发布,MongoDB 连接包

MongooseJS 4.1.3 发布,此版本更新内容如下: fixed; getUpdate() in pre update hooks #3520 gregthegeek fixed; handleArray() ensures arg is an array #3238 jloveridge fixed; refres......

oschina
2015/08/17
626
5
Mongoose 4.4.17 发布,MongoDB 连接包

Mongoose 4.4.17 发布了,以下是本次发布值得关注的内容: docs: remove repetition in QueryStream docs #4147 hugoabonizio fix(document): dont double-validate doc array elements #414......

oschina
2016/05/14
751
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux下端口转发工具rinetd介绍

linux下简单好用的工具rinetd,实现端口映射/转发/重定向,针对TCP协议,不支持UDP。 官网地址 http://www.boutell.com/rinetd 里面介绍及使用齐全。 使用场景举例: 阿里云内网Redis连接问题...

ouhoo
10分钟前
1
0
Oracle学习日志-5(算数运算符,比较运算符和逻辑运算符)

因为有编程基础,所以对于这一章还是很好理解,只需要注意对NULL的运算。 操作的表格 算数运算符 查询商品名字和商品售价,并商品售价乘2 SELECT product_name,sale_price * 2 AS "sale_pri...

白话
22分钟前
1
0
搜索引擎(Lucene介绍、分词器详解)

Lucene介绍 Lucene简介 最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简...

这很耳东先生
27分钟前
0
0
quartz详细介绍

quartz常用api Scheduler 调度程序交互的主要API。 Job 希望由调度程序执行的组件实现的接口。 JobDetail 用于定义作业的实例。 JobDataMap 可以包含不限量的序列化数据,在job运行的时候可以...

大笨象会跳舞吧
27分钟前
1
0
kotlin使用jackson序列化enum

默认情况下,我们序列化与反序列化enum是它的name,事实上大部分情况下我们需要序列化的是我们自定义的value,那应该怎么做呢? 这种情况下我们就需要@JsonValue与@JsonCreator data class U...

weidedong
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部