Mongoose 索引


一、Mongoose 索引

索引是對數據庫表中一列或多列的值進行排序的一種結構,可以讓我們查詢數據庫變得更 快。MongoDB 的索引幾乎與傳統的關系型數據庫一模一樣,這其中也包括一些基本的查詢 優化技巧。

mongoose 中除了以前創建索引的方式,我們也可以在定義 Schema 的時候指定創建索引。

var DeviceSchema = new mongoose.Schema({
    sn: {
        type: Number, // 唯一索引 
        unique: true
    }, name: {
        type: String, // 普通索引
        index: true
    }
});

 

二、Mongoose 內置 CURD

https://mongoosejs.com/docs/queries.html

 

Model.deleteMany() 
Model.deleteOne()
Model.find()
Model.findById()
Model.findByIdAndDelete()
Model.findByIdAndRemove() 
Model.findByIdAndUpdate() 
Model.findOne()
Model.findOneAndDelete()
Model.findOneAndRemove() 
Model.findOneAndUpdate() 
Model.replaceOne()
Model.updateMany()
Model.updateOne()

 

三、擴展 Mongoose CURD 方法

var mongoose = require('./db.js');
var UserSchema = mongoose.Schema({
    name: {
        type: String
    }, age: Number, status: {
        type: Number,
        default: 1
    }
})
// 靜態方法 UserSchema.statics.findByUid=function(uid,cb){
this.find({"_id": uid}, function (err, docs) {
    cb(err, docs)
})
}// 實例方法 
UserSchema.methods.print = function () {
    console.log('這是一個實例方法');
    console.log(this);
}
;
module.exports = mongoose.model('User', UserSchema, 'user');

demo

user.js

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


var UserSchema=mongoose.Schema({
    
    name:{
        type:String       
    },
    sn:{
        type:String,
        index:true
    },
    age:Number,       
    status:{
        type:Number,
        default:1

    }
})
//靜態方法 

UserSchema.statics.findBySn=function(sn,cb){


    //通過 find方法獲取 sn的數據    this 關鍵字獲取當前的model


    this.find({"sn":sn},function(err,docs){
        cb(err,docs)
    })   


}

// 實例方法   (基本不用)

UserSchema.methods.print=function(){


    console.log('我是一個實例方法')

    console.log(this.name)
}

module.exports=mongoose.model('User',UserSchema,'user');

使用:

var UserModel = require('./model/user.js');


// var user = new UserModel({
//     name: '趙六',
//     sn:'123456781',
//     age: 29
// });
// user.save();


// UserModel.findBySn('123456781',function(){})


UserModel.findBySn('123456782', function (err, docs) {

    if (err) {

        console.log(err);

        return;
    }
    console.log(docs)
})


var user = new UserModel({
    name: '趙六',
    sn: '123456781',
    age: 29
});
// user.save();


user.print();//自定義的實例方法

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM