一、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();//自定義的實例方法