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

mongodb操作之mongoose的更多相关文章

  1. 基础拾遗-----mongoDB操作

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  2. mongodb操作文件

    mongodb操作文件,主要是通过GridFS类.存储文件主要存放在fs中,其中的fs是数据库默认的.并且GridFS是直接与数据库打交道,与collection集合无关. ============= ...

  3. Mongodb 数据类型及Mongoose常用CURD

    前言 看完了Node.js实战,其中在数据存储部分提到了Redis.Mongodb,我自己也根据书中的介绍写了几个简单的demo,在demo的过程首先遇到的问题就是数据类型和常见的CURD写法. mo ...

  4. MongoDB学习之mongoose

    MongoDB介绍: MongoDB是基于Javascript语言的数据库,存储格式是JSON,而Node也是基于JavaScript的环境(库),所以node和mongoDB的搭配能减少因为数据转换 ...

  5. MongoDB操作

    创建.删除数据库 格式 use DATABASE_NAME 如果不存在,则创建,否则直接切换到该数据库 显示当前所在的数据库 db 显示所有数据库 show dbs 删除数据库 db.dropData ...

  6. PHP mongoDB 操作

    <?php /** * PHP操作MongoDB学习笔记 */ //************************* //** 连接MongoDB数据库 **// //************ ...

  7. mongodb操作之使用javaScript实现多表关联查询

    一.数据控制 mongodb操作数据量控制,千万控制好,不要因为操作的数据量过多而导致失败. 演示一下发生此类错误的错误提示:

  8. SpringMVC连接MongoDB操作数据库

    <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...

  9. mongoDB操作详细

    简介 它和我们使用的关系型数据库最大的区别就是约束性,可以说文件型数据库几乎不存在约束性,理论上没有主外键约束,没有存储的数据类型约束等等 关系型数据库中有一个 "表" 的概念,有 ...

随机推荐

  1. Redis + Redis-sentinel + keepalived部署过程

    1   Redis缓存服务 Redis是一个key-value存储系统.与memcached一样,为了保证效率,数据都是缓存在内存中的.区别的是redis支持周期性的把更新的数据写入磁盘或者把修改操作 ...

  2. [sloved] IDE JavaServlet "Error: Could not find or load main class Servlet"

    [ sloved ] JavaServlet "Error: Could not find or load main class Servlet" 报错内容: 提供一份 Servl ...

  3. P1444 [USACO1.3]虫洞wormhole

    luogu P1444 [USACO1.3]虫洞wormhole 首先感谢ghj的讲解 题目描述 农夫约翰爱好在周末进行高能物理实验的结果却适得其反,导致N个虫洞在农场上(2<=N<=12 ...

  4. js中一切都是对象

    <script> function cat(){} var cat = new cat(); console.log(cat.constructor) console.log(typeof ...

  5. 【Leetcode】Binary Tree Traversal

    把三个二叉树遍历的题放在一起了. 递归写法太简单,就不再实现了,每题实现了两种非递归算法. 一种是利用栈,时间和空间复杂度都是O(n). 另一种是借助线索二叉树,也叫Morris遍历,充分利用树中节点 ...

  6. selenium(python)用HTMLTestRunner导出报告(断言)信息的显示

    导出报告如图所示,没有显示相关信息 修改HTMLTestRunner.py文件的763-768行,注释掉if else,保留else 的uo = o 再次运行可看到信息(测试用例中的print信息也会 ...

  7. DEM反应添加顺序注意问题

    在含有DEM反应的dat中,均相反应的block要在DEM反应之前,例如: @(RXNS) (some reaction equations) @(END) @(DES_RXNS) (some rea ...

  8. python全栈开发_day9_脚本文件和函数的基本运用

    一:脚本文件 1)脚本文件的操作 import sys p=sys.argv print(p) #将python代码放到cmd中运行,在后面添加参数,会自动保存在输出的列表中,默认输出的列表中只有一个 ...

  9. hdu1495 bfs搜索、模拟

    大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但see ...

  10. saltstack源码详解一

    目录 初识源码流程 入口 1.grains.items 2.pillar.items 2/3: 是否可以用python脚本实现 总结pillar源码分析: @(python之路)[saltstack源 ...