Node.js-MongoDB数据库:Mongoose对象模型库文档操作自定义扩展
上篇介绍了Mongoose对象模型库的内置的基本文档操作:增删改查。本篇将介绍用户根据需要可以自定义扩展文档操作。代码如下:/*** MongoDB数据库操作:mongoose对象模型库之文档操作方法自定义扩展**/const mongoose = require("mongoose");const { compileFunction } = require("vm");//与数据库建立连接mon
·
上篇介绍了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);
});
自定义实例方法调用结果
自定义静态方法调用结果

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