1. 程式人生 > >node.js-mongoose

node.js-mongoose

mongoose

cnpm install -g mongoose

三方模組需要手動安裝。

cnpm安裝比較快,安裝cnpm移步

source.js

const mongoose = require('mongoose');
const source_url = 'mongodb://localhost:27017/godme';
mongoose.connect(source_url);
mongoose.connection('connected', function(){
    console.log('connected success with source_url : '
, source_url); }); mongoose.connection('error', function(error){ console.log('connect error : ', error); }); mongoose.connection('disconnect', function(){ console.log('disconnected !'); }); module.exports = mongoose;

mongoose:模組匯入

source_url:連線地址

connect:發起連線

connection:監聽事件

module.exports

:模組匯入

person.js

const mongoose = require('./source.js');
const Schema = mongoose.Schema;
var PeresonSchema = new Schema({
    name : {type : String},
    male : {type : String},
    age  : {type : Number}
});
module.exports = mongoose.model('Person', PersonSchema);

mongoose:同一個源

Schema:格式

PersonSchema

:設定Person格式

model:生成模型

save.js

const Person = require('./person.js');
var person = new Person({
    name : 'godme',
    male : 'male',
    age  : 99
});
person.save(function(err, result){
    if(err){
        console.log('save error : ', err);
        return;
    }
    console.log('save success : ' , result);
})

Person:取出模型

person:通過模型直接new

save:物件直接儲存,可設定回撥方法

update.js

const Person = require('./person.js');
var where = {'name' : 'godme'}
var update = {'age' : '123'}
Person.update(where, update, function(error, result){
    if(error){
        console.log('update error : ', error);
        return;
    }
    console.log('update success : ', result);
});

Person:同源,靜態呼叫即可

update:更新方法,先篩選,後更新,可回撥

ID.js

const Person = require('./person.js');
var ID = '5bd95321242daf65e4347ea4';
var update = {'name' : 'judas'};
Person.findByIdAndUpdate(ID, update, function(error, result){
    if(error){
        console.log('update error : ', error);
        return;
    }
    console.log('update success : ', result);
});

findByIdAndUpdatewhere換成ID

delete.js

const Person = require('./person.js');
var where = {'age' : 123};
Person.remove(where, function(err, result){
    if(err){
        console.log('remove error : ', error);
        return;
    }
    console.log('remove result : ', result);
});

remove:即delete

where:篩查條件

search.js

const Person = require('./person.js');
var where = {'name' : 'godme'};
Person.find(where, function(err, result){
    if(err){
        console.log('find error : ', error);
        return;
    }
    console.log('find result : ', result);
});
  • options
const Person = require('./person.js');
var where = {'name' : 'godme'};
var options = {'age':0,'_id':0,'_v':0 };
Person.find(where, function(err, result){
    if(err){
        console.log('find error : ', error);
        return;
    }
    console.log('find result : ', result);
});

options中要麼全1要麼全0,交雜會報錯。

  • 範圍限定
{age: {$gte: 18, $lte: 30}}; // 18 <= age <= 30
  • id
var ID = '5bd95ae2272adb6bd01d91f9'
Person.findById(ID, function(err, result){
    if(err){
        console.log('find error : ', err);
        return;
    }
    console.log('find result : ', result);
});
  • count
Person.count({}, function(err, result){
    if(err){
        console.log('count error : ', err);
        return;
    }
    console.log('count : ', result);
})
  • 正則模糊
Person.find({'name' : {$regex : /^g/}}, function(err, result){
    if(err){
        console.log('find error : ', err);
        return;
    }
    console.log('find result : ', result);
})
  • 分頁綜合
const Person = require('./person.js');
var condition = {};
var show = {'_id':0,'__v':0,'male':0};
var pageSize = 5;
var order = {'age':1};
for(var currentPage = 0; currentPage < 5; currentPage++){
    var skipCount = currentPage * pageSize;
    Person.find(condition, show)
        .skip(skipCount)
        .limit(pageSize)
        .sort(order)
        .exec(function(err, resultList){
        if(err){
            console.log('page search Error : ', err);
            return;
        }
        console.log('page search size : ', resultList.length);
        resultList.forEach(function(result){
           console.log('- single : ', result); 
        });
    });
}

嗯,老操作,自我體會。

如果對mongo不太熟悉的,可以參閱一下這一篇,基本用法都有介紹。

index.js

const mongoose = require('./source.js');
const Schema = mongoose.Schema;
const PersonSchema = new Schema({
    name : {type : String, index : true},
    age  : {type : String},
    lastLogin : {type : Date , default : Date.now}
});
module.exports = mongoose.model('Person', PersonSchema);

index:指定為索引

default:設定預設值