Node_Mongoose

Mongoose简介

是一个将JavaScript对象与数据库发生关联的一个框架,Object related model。操纵对象,就是操纵数据库了。对象发生了,同时也耐久化(数据进入数据库)了。

开端运用Mongoose

衔接数据库

var mongoose = require('mongoose');

//建立数据库衔接
var db = mongoose.createConnection('mongodb://localhost:27017/zf');

//监听open事宜
db.once('open',function ( callback ) {
    
    console.log('数据库胜利衔接');
    
});

module.exports = db;

定义模子

制造schema -> 定义在schema上的scatic要领 -> 制造模子

new mongoose.schema({}); //参数是json,定义字段。

建立模子 db.model(collectionsName,schemaName);

var mongoose = require('mongoose');
var db = require('./db.js');

//建立一个schema组织。 schema--形式
var StudentSchema = new mongoose.Schema({
    name: {type: String, default: '匿名用户'},
    age: { type: Number },
    sex: { type: String }
});
// 建立要领
StudentSchema.statics.zhaoren = function ( name,callback ) {
    this.model('Student').find({'name': name},callback);
}

//建立修正要领
StudentSchema.statics.xiugai = function ( conditions,update,options,callback ) {
    this.model('Student').update(conditions,update,options,callback);
}
var studentModel = db.model('Student',StudentSchema);
module.exports = studentModel;

app.js 中只操纵类,不操纵数据库。


var Cat = mongoose.model('Cat'{'name': String, age: Number});
Cat.find({'name': 'tom'},function( err.reslut ){
    var xiaomao = reslut[0]; 
    //小猫这个变量是一个Cat的实例,它是从Cat鸠合中find出来的,所以find出来今后,就是Cat的一个实例。  //不只建立的是猫的实例, find查询出来的也是猫的实例。
    xiaomao.age = 10;
    xiaomao.save();
})

Schema

定义文档组织支撑的范例

String
Number
Date
Buffer
Boolean
Mixed
ObjectId
Array

定义对象(methods)要领

实例出来的对象,运用的要领, 实例来挪用。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mlln');
var db = mongoose.connection;

db.on('open',function ( callback ) {
    console.log('数据库胜利翻开');
});

var animalSchema = new mongoose.Schema({
    'name': String,
    'type': String
});


animalSchema.methods.zhaotonglei = function ( cb ) {
    this.model('Animal').find({'type': this.type},cb);
}

var Animal = mongoose.model('Animal',animalSchema);
 
//module.exports = Blog;

/*Animal.create({'name': '汤姆','type': '猫'});
Animal.create({'name': 'imim','type': '猫'});
Animal.create({'name': '小白','type': '狗'});
Animal.create({'name': '加菲猫','type': '猫'});
Animal.create({'name': 'snoopy','type': '狗'});
*/

//blog.save();

Animal.findOne({'name': 'imim'},function ( err,reslut ) {
    var dog = reslut;
    dog.zhaotonglei(function ( err,resluts ) {
        console.log( resluts );
    });
});

model文档操纵

组织函数

组织函数, 参数1:鸠合称号, 参数2:Schema实例

db.model(“test1”, TestSchema );

查询

查询, 参数1疏忽,或为空对象则返回一切鸠合文档

model.find({}, callback);
model.find({},field,callback);
//过滤查询,参数2: {‘name’:1, ‘age’:0} 查询文档的返回效果包括name , 不包括age.(_id默许是1)
model.find({},null,{limit:20});
//过滤查询,参数3: 游标操纵 limit限定返回效果数目为20个,如不足20个则返回一切.
model.findOne({}, callback);
//查询找到的第一个文档
model.findById(‘obj._id’, callback);
//查询找到的第一个文档,同上. 然则只接收 __id 的值查询

建立

建立, 在鸠合中建立一个文档

Model.create(文档数据, callback))

更新

更新,参数1: 查询前提, 参数2: 更新对象,能够运用MondoDB的更新修正器

Model.update(conditions, update, function(error)

删除

删除, 参数1: 查询前提

Model.remove(conditions,callback); 
    原文作者:alogy
    原文地址: https://segmentfault.com/a/1190000005686320
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞