上篇介绍了Mongoose对象模型库的内置的基本文档操作:增删改查。本篇将介绍用户根据需要可以自定义扩展文档操作。

代码如下:

/**
 * MongoDB数据库操作:mongoose对象模型库之文档操作方法自定义扩展
 * 
 */
const mongoose = require("mongoose");
const { compileFunction } = require("vm");

//与数据库建立连接
mongoose.connect("mongodb://127.0.0.1:27017/studentdb",{useNewUrlParser: true, useUnifiedTopology: true});
const conn = mongoose.connection;
conn.on("error",(err)=>{
    console.error("数据库连接失败:"+err);
});
conn.once("open",()=>{
    console.log("数据库连接成功!");
});


//模式定义:主要指定对应的MongoDB集合的字段和字段类型。
let studentSchema = mongoose.Schema({
    Id:String,
    Name:String,
    Age:Number,
    Weight:Number
});

//自定义实例方法
studentSchema.methods.findSimilarStudentByAge = function(cb){
   return this.model("students").find({Age:this.Age},cb);
}

//自定义静态方法
studentSchema.statics.findByName = function(name,cb){
    this.find({ Name: new RegExp(name, 'i') }, cb);
}

//模型创建:将模式编译成模型
let Student = mongoose.model("students",studentSchema);

//测试调用自定义实例方法
let studentRefObj = new Student({"Id":1004,"Name":"Jhon","Age":35,"Weight":23.5});
studentRefObj.findSimilarStudentByAge((err,students)=>{
    console.log("====1.调用自定义实例方法查找相同年龄的学生结果====");
    console.log(students);
});

//测试调用静态方法
Student.findByName("Jue",(err,students)=>{
    console.log("====2.调用自定义静态方法查找相同名字的学生结果====");
    console.log(students);
});




自定义实例方法调用结果 

自定义静态方法调用结果 

 

 

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐