node21---mongoose

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);
    });
});
时间: 2024-10-17 00:10:23

node21---mongoose的相关文章

mongoose 全面理解

一.创建schemas 创建schemas的方式: 1 var userSchema = new mongoose.Schema({ 2 name: String, 3 email: String, 4 createdOn: Date 5 }); schemas中的数据类型有以下几种:? String? Number? Date? Boolean? Buffer? ObjectId? Mixed? Array 特别需要说明一下ObjectId类型和Mixed类型以及Array类型,在schema

mongoose中给字段添加索引的方法

mongoose中给字段添加索引的方法有两种,一种通过在定义schema的时候配置,如: 1 var animalSchema = new Schema({ 2 name: String, 3 type: String, 4 tags: { type: [String], index: true } 另一种通过index方法添加索引,如给name和type字段添加索引(1和-1分别表示升序索引和降序索引): animalSchema.index({ name: 1, type: -1 });

node 通过mongoose实现 mongodb的增删改

node 通过mongoose实现 mongodb的增删改 新建文件test.js 内容如下: var mongoose = require('mongoose') , Schema = mongoose.Schema; mongoose.connect('mongodb://localhost/test'); var BlogSchema = new Schema({ id : {type : Number, index : true} ,title : {type : String} });

mongoose 学习笔记

1 安装 moogoose  模块 ,附加 --save 参数将包的信息添加到package.json 文件 npm install --save moogoose 2  加载 moogoose 模块,并连接数据库 var mongoose = require('mongoose'); //mongoose.connect('mongodb://mongod所在地址ip(ipdress)/需要连接的数据库名(databasename)'); mongoose.connect('mongodb:/

Mongoose简单学习笔记

1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entity : 由Model创建的实体,他的操作也会影响数据库 注意: 1.本学习文档采用严格命名方式来区别不同对象,例如: var PersonSchema; //Person的文本属性 var PersonModel; //Person的数据库模型 var PersonEntity; //Person实体 2.Sch

Mongoose学习参考文档——基础篇

Mongoose学习参考文档 前言:本学习参考文档仅供参考,如有问题,师请雅正 一.快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entity : 由Model创建的实体,他的操作也会影响数据库 注意: 1.本学习文档采用严格命名方式来区别不同对象,例如: var PersonSchema; //Person的文本属性 var PersonModel; //

node.js + express(ejs) + mongodb(mongoose) 增删改实例

刚学node不久,以下是对最近学习的总结,不足的地方还请见谅. node 和 mongodb安装不做为本文讲解,想了解的朋友可以通过一下链接配置环境: node 安装:http://www.infoq.com/cn/articles/nodejs-npm-install-config Win7下MongoDB安装 :http://www.mkyong.com/mongodb/how-to-install-mongodb-on-windows/ MongoDB 安装步骤总结: 1.解压目录到d盘

Mongoose 参考手册

转自:https://cnodejs.org/topic/548e54d157fd3ae46b233502 Mongoose 是什么? 一般我们不直接用MongoDB的函数来操作MongoDB数据库 Mongose就是一套操作MongoDB数据库的接口. Schema 一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力.可以说是数据属性模型(传统意义的表结构),又或着是“集合”的模型骨架 /* 定义一个 Schema */ var mongoose =

DICOM:剖析Orthanc中的Web Server,Mongoose之“连接请求触发的事件序列”(二)

背景: Orthanc是本专栏中介绍过的一款新型DICOM服务器,具有轻量级.支持REST的特性,可将任意运行Windows和Linux系统的计算机变成DICOM服务器,即miniPACS.Orthanc内嵌多种模块,数据库管理简单,且不依赖于第三方软件.因此通过剖析Orthanc源码可以学习到搭建DICOM系统中的各个环节,例如SQLite嵌入型数据库.GoogleLog日志库.DCMTK医学DICOM库,以及近期要介绍的开源Web Server,Mongoose. 题记: 近期计划参照官网剖

nodejs(一) 简单登录验证 使用mongoose 操作MongoDB

---恢复内容开始--- 开发使用webstorm 9  新建nodejs+express 项目 newfarmer 文章目录 配置Mongoose 创建目录及文件 插入数据,POST提交JSON增加一条记录 查询数据,取出刚增加的记录 1. 配置Mongoose 增加mongoose的类库 npm install mongoose --save 2.创建目录及文件 在models目录,增加mongodb.js文件 数据库连接文件1 /** 2 * Created by hao on 2014/