01.js

//引包
var mongoose = require('mongoose');
//创建一个数据库连接
mongoose.connect('mongodb://localhost/test'); //创建一个Cat类。 语法mongosse.model(模型名字,Schema);
//这里省略了一步,就是schema是通过new mongoose.schema({})创建的(类工厂)。
var cc = mongoose.model('Cat', { name: String , age : Number , sex : String });
//对象
var kitty = new cc({ name: "汤姆" , "sex" : "公猫"});
//var kitty1 = new cc({ a: "汤姆"}); 是不行的,因为schema定了。 kitty.save(function (err) {
console.log('meow');
}); //寻找汤姆猫,将它改为8岁。
cc.find({"name":"汤姆"},function(err,result){
console.log(result);//一条记录
var xiaomao = result[0]; //xiaomao这个变量是一个Cat的实例
xiaomao.age = 8;
xiaomao.save();
});

02.js

/**
* mongoose官网中,Guide是学习路线,API Doc是api接口。
索引不能重复,查找快
*/
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test'); var db = mongoose.connection;
db.once('open', function (callback) {
console.log("数据库成功打开");
}); //博客的结构(Schema是类的模版或者是一个创建类的工厂,他创建的类有这些属性)
var blogSchema = new mongoose.Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
//这个工厂创建的类还有这个方法(对象也有)
blogSchema.methods.showInfo = function(){
console.log(this.title);
}
//通过工厂创建一个有名类,类的名字是Blog,也可以是别的名字。
var bb = mongoose.model('Blog', blogSchema); var blog = new bb({//Blog类的对象
"title" : "博客测试",
"author" : "考拉"
}); //blog.save();
blog.showInfo();

03.js

mongoose.connect('mongodb://localhost/test');

var db = mongoose.connection;
db.once('open', function (callback) {
console.log("数据库成功打开");
}); //博客的结构(类工厂,工厂创建的类有这些属性)
var animalSchema = new mongoose.Schema({
"name" : String,
"type" : String
});
//工厂创建的类有这些方法(对象也有)
animalSchema.methods.zhaotonglei = function(callback){
this.model('Animal').find({"type":this.type},callback);
} //通过schema工厂创建一个有名的Animal类
var Animal = mongoose.model('Animal', animalSchema);
//creat是类的方法,创建对象。
Animal.create({"name":"汤姆","type":"猫"});
Animal.create({"name":"咪咪","type":"猫"});
Animal.create({"name":"小白","type":"狗"});
Animal.create({"name":"snoopy","type":"狗"}); Animal.findOne({"name":"小白"},function(err,result){
var dog = result;//result是Animal的实例
dog.zhaotonglei(function(err,result){
console.log(result);
});
});

04.js

/**
* Created by Danny on 2015/9/29 10:18.
*/
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test'); var db = mongoose.connection;
db.once('open', function (callback) {
console.log("数据库成功打开");
}); //博客的结构
var blogSchema = new mongoose.Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }]
}); //发表评论
blogSchema.methods.pinglun = function(obj,callback){
this.comments.push(obj);
this.save();
} var Blog = mongoose.model('Blog', blogSchema); //var blog = new Blog({
// "title" : "哈哈哈",
// "author" : "考拉",
// "body" : "哈哈哈哈"
//}); //寻找一个标题是哈哈哈的博客,然后发表评论
Blog.findOne({"title":"哈哈哈"},function(err,blog){
if(!blog){
return;
}
blog.pinglun({"body":"再来一个评论","date" : new Date()});
});

05.js

/**
* Created by Danny on 2015/9/29 10:18.
*/
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/xuanke'); var db = mongoose.connection;
db.once('open', function (callback) {
console.log("数据库成功打开");
}); //学生工厂
var studentSchema = new mongoose.Schema({
"name" : String,
"age" : Number,
"sex" : String
});
//实例方法,涨一岁
studentSchema.methods.zhangyisui = function(){
this.age++;
this.save();//改变数据库,要save()
}
//学生类
var Student = mongoose.model("Student",studentSchema); //课程工厂
var kechengSchema = new mongoose.Schema({
"name" : String,
"info" : String,
"student" : [studentSchema]//课程表里面会有学生的全部json,不是外键
});
//添加学生
kechengSchema.methods.tianjiaxuesheng = function(studentObj,callback){
this.student.push(studentObj);
this.save(function(){
callback();
});
} kechengSchema.methods.zhaoxuesheng = function(num,callback){
//要通过学生类去找,this是课程对象,
Student.findOne({"name":this.student[num].name},function(err,result){
callback(err,result);
});
}
//课程类
var Kecheng = mongoose.model("Kecheng",kechengSchema); //实例化几个学生
var xiaoming = new Student({"name":"小明","age":12,"sex":"男"});
xiaoming.save();
Student.creat({"name":"小hua","age":10,"sex":"nv"});
var shuxue = new Kecheng({
"name" : "数学课",
"info" : "学数学的"
}); shuxue.tianjiaxuesheng(xiaoming,function(){
console.log("添加成功");
}); //寻找学生小明
Student.findOne({"name":"小明"},function(err,student){
student.zhangyisui();//学生表改了,课程表没改,
}); //通过课程找学生
Kecheng.findOne({"name":"数学课"},function(err,kecheng){
kecheng.zhaoxuesheng(0,function(err,result){
result.zhangyisui();
console.log(result);
});
});

node21---mongoose的更多相关文章

  1. mongoose - 让node.js高效操作mongodb

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  2. 在mongoose中使用$match对id失效的解决方法

    Topic.aggregate( //{$match:{_id:"5576b59e192868d01f75486c"}}, //not work //{$match:{title: ...

  3. Mongo基础使用,以及在Express项目中使用Mongoose

    MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...

  4. mongoose数据库连接和操作

    var mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/hometown'); var db = ...

  5. mongoose 和 mongoDB

    第三方学习地址:http://blog.csdn.net/foruok/article/details/47746057 下载mongoDB https://www.mongodb.com/downl ...

  6. Nodejs之MEAN栈开发(三)---- 使用Mongoose创建模型及API

    继续开扒我们的MEAN栈开发之路,前面两节我们学习了Express.Jade引擎并创建了几个静态页面,最后通过Heroku部署了应用. Nodejs之MEAN栈开发(一)---- 路由与控制器 Nod ...

  7. Mongoose Schemas定义中timestamps选项的妙用

    在Node.js中使用MongoDB少不了Mongoose. 假设有如下Mongoose Schemas的定义: var ItemSchema = new mongoose.Schema({ biz: ...

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

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

  9. Mongoose使用案例--让JSON数据直接入库MongoDB

    目录 1.准备工作. 2.配置Mongoose. 3.创建目录及文件. 4.插入数据,POST提交JSON增加一条记录. 5.查询数据,取出你插入数据库的记录. 一.准备工作 使用Express4创建 ...

  10. 利用Mongoose来结构化模式与验证

    Mongoose是一个文档对象模型(ODM)库,为MongoDB Node.js原生驱动程序提供更多的功能. 把结构化的模式应用到一个MongoDB集合,提供了验证和类型转换的好处 Mongoose通 ...

随机推荐

  1. 关于vue 自定义组件的写法与用法

    最近在网上看到很多大神都有写博客的习惯,坚持写博客不但可以为自己的平时的学习做好记录积累 无意之中也学还能帮助到一些其他的朋友所以今天我也注册一个账号记录一下学习的点滴!当然本人能力实在有限写出的文章 ...

  2. Linux 下安装 jdk-7u79-linux-x64.gz,jdk1.7.0_79,jdk1.7步骤:

    1.首先下载对应CentOS版本的jdk:这里我下载的是jdk-7u79-linux-x64.tar.gz 2.上传到CentOS下的目录中 3.新建一个APP目录作为存储jdk的目录 4.解压jdk ...

  3. OEM:Enterprise Manager 无法连接到数据库实例 错误解决

    今天遇到了一个Enterprise Manager 无法连接到数据库实例的错误,无法使用OEM,经过检查发现是 SYSMAN用户被锁定了,关于Enterprise Manager 无法连接到数据库实例 ...

  4. 【转】如何在Mac 终端升级ruby版本

    原文网址:https://segmentfault.com/a/1190000003784636 rvm是什么?为什么要安装rvm呢,因为rvm可以让你拥有多个版本的Ruby,并且可以在多个版本之间自 ...

  5. Java-MyBatis: MyBatis3 | Java API

    ylbtech-Java-MyBatis:  MyBatis3 | Java API 1.返回顶部 1. Java API 既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升 ...

  6. maven 项目加载本地JAR

     将jar安装到本地的maven仓库 1.首先确定本地有maven环境. 2.安装本地jar 模板: mvn install:install-file -Dfile=<path-to-file& ...

  7. net 线程挂起

    2013.10.18  通讯组件开发 情景: 主线程添加队列,子线程负责队列中消息发送.当队列中数据为空时,停止发送挂起子线程. 当主线程添加队列时,重新开启子线程进行消息发送. 方案一 但是不采用传 ...

  8. windows服务更改配置文件

    现场部署的服务所在文件夹内容如上图所示,由于现场数据库服务器更改了IP,所以我服务里的数据库连接字符串也需要修改(注意到日志文件,从某天改了IP后就再也连不上数据库了) 修改过程: 1.打开服务管理, ...

  9. Navicat for Mysql 关于1130错误,无法正常方法解决的解决办法。

    本人因为失误操作,不小心将mysql 玩崩了.导致一直报1130错误,无法进入. 看了很多网上的帖子,但是那些办法都行不通.最后通过好友的指点,解决了这个问题.   1.停止MySQL服务,执行net ...

  10. Smalltalk

    Smalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was o ...