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();
});
mongodb操作之mongoose的更多相关文章
- 基础拾遗-----mongoDB操作
基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...
- mongodb操作文件
mongodb操作文件,主要是通过GridFS类.存储文件主要存放在fs中,其中的fs是数据库默认的.并且GridFS是直接与数据库打交道,与collection集合无关. ============= ...
- Mongodb 数据类型及Mongoose常用CURD
前言 看完了Node.js实战,其中在数据存储部分提到了Redis.Mongodb,我自己也根据书中的介绍写了几个简单的demo,在demo的过程首先遇到的问题就是数据类型和常见的CURD写法. mo ...
- MongoDB学习之mongoose
MongoDB介绍: MongoDB是基于Javascript语言的数据库,存储格式是JSON,而Node也是基于JavaScript的环境(库),所以node和mongoDB的搭配能减少因为数据转换 ...
- MongoDB操作
创建.删除数据库 格式 use DATABASE_NAME 如果不存在,则创建,否则直接切换到该数据库 显示当前所在的数据库 db 显示所有数据库 show dbs 删除数据库 db.dropData ...
- PHP mongoDB 操作
<?php /** * PHP操作MongoDB学习笔记 */ //************************* //** 连接MongoDB数据库 **// //************ ...
- mongodb操作之使用javaScript实现多表关联查询
一.数据控制 mongodb操作数据量控制,千万控制好,不要因为操作的数据量过多而导致失败. 演示一下发生此类错误的错误提示:
- SpringMVC连接MongoDB操作数据库
<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...
- mongoDB操作详细
简介 它和我们使用的关系型数据库最大的区别就是约束性,可以说文件型数据库几乎不存在约束性,理论上没有主外键约束,没有存储的数据类型约束等等 关系型数据库中有一个 "表" 的概念,有 ...
随机推荐
- 推荐一些优秀的SAP网站
著名的SAP论坛:(人气比较旺,可以找到很多问题的回答) http://www.sapfans.com/ 著名的It专业网站的SAP部分:(查找部分资料) http://sap.ittoolbox.c ...
- “全栈2019”Java第三十六章:类
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- iframe嵌套页面的跳转方式
一.背景A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,在D中跳转页面的写法区别如下. 二.JS跳转window.location.href.locatio ...
- LAMPer 技能树
- iOS hook原理
OC中的method其实是一个结构体 struct objc_method{ SEL method_name char *method_types IMP method_imp } SEL是方法名,I ...
- 百度地图 Infowidow 内容(content 下标签) 点击事件
需要监听 infowindow 的打开事件 ,查看InfoWindow API 实现 html 点击效果 代码 var infoWindow = that.createDangerInfoWindo ...
- 海思的一个 Makefile 解析
Makefile 原文 include ../Makefile.param #ifeq ($(SAMPLE_PARAM_FILE), ) # SAMPLE_PARAM_FILE:=../Makefil ...
- BZOJ1688 Disease Manangement 疾病管理
Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D ...
- Django项目创建与管理
1.主题 这部分教程主要介绍如何通过Pycharm创建.管理.运行一个Django工程.对于Django模块的相关知识大家可以参考Python社区. 2.准备环境 Django版本为2.0或更高 Py ...
- 2019年华南理工大学程序设计竞赛(春季赛) B 修仙时在做什么?有没有空?可以来炼丹吗?(思维建图搜索)
https://ac.nowcoder.com/acm/contest/625/B 分析: 全部的状态只有1<<18 个 , 所以我们可以预处理 f[u][j] , 然后建立出全部的u可以 ...