• 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();//自定义的实例方法
  • 相关阅读:
    MFC中实现LISTCRTL控件选中多行进行删除操作
    如何使属性值为“只读”(readonly)的EDIT控件在获取焦点后不显示光标?
    crm 使用stark组件
    ModelForm组件
    自定义admin管理工具(stark组件)
    Django-admin管理工具
    Django-session中间件源码简单分析
    基于角色的权限管理
    ajax参数补充
    datetime模块
  • 原文地址:https://www.cnblogs.com/loaderman/p/11516043.html
Copyright © 2020-2023  润新知