mongoose建表的一系列骚操作(对象扩展、类上扩展、虚拟属性)

nodeJS——Mongoose基础操作 在 MongoDB 的查询投影中,有这样一个规则:不能同时混合使用 1 和 0 作为值(除了 _id 字段),即要么全部使用 1 来包含字段,要么全部使用 0 来排除字段,只有 _id 字段可以例外处理。MongoDB 支持对各种类型的数据进行排序,但为了确保最佳性能,尤其是当处理大量数据时,应该尽量对数值和日期类型进行排序,并且为经常用于排序的字段创建索引。作为参数,该对象的键是你要排序的字段名,值为 1 标识升序(从小到大),值为-1 表示降序(从大到小),可以在。)等,可以简化应用程序的开发过程。 阅读详情

一: 对象扩展(Schema.methods)

对象扩展则是一个具体事物使用的方法

对于对象扩展:
比如我想根据具体的一本书,比如《程序员的自我修养》查找和和它类似的书,则定义实例方法 doc.isSimilar(xxx)。实例方法嘛,调用者是具体的实例
在这里插入图片描述注: 对于对象扩展是一个对象的调用方法可以通过mongodb查出的对象调用她的方法,也可以用生成一个实例对象调用它的方法
在这里插入图片描述

二: 类上扩展(Schema.static)

类上扩展给我感觉就是大规模时使用的方法

对于类上扩展:
我想查找所有的故事书(而且以后经常查找),但不想每次都用原生方法Book.find({type:story}) ,于是我就可以定义一个静态方法:以后就可以这么查 Book.isStory() 就ok了,这个方法比较直接,直接用就行。
在这里插入图片描述

三: 虚拟属性(Virtuals)

Virtuals属性可以从Document中获取并设置 但它并不存在mongoDB中
在这里插入图片描述

在Egg中使用MongoDB及Mongoose 新公司的项目中用了Egg和MongoDB及mongoose。最近有空来系统的梳理一下。 参考资料&扩展阅读: Mongoose中文文档 mongoose学习笔记(超详细) Mongoose中文文档-Mongoose的API Egg链接MongoDB Egg 使用 egg-mongoose来方便的跟数据库进行链接 // eggProject/server/config/config.... 阅读详情

相关推荐

Mongoose详解:Node.js中MongoDB数据建模与操作利器

Schema作为Mongoose的基石,承担着从JavaScript对象到MongoDB BSON文档之间的映射职责。通过Schema,开发者可以显式地声明每个字段的类型、默认值、是否必填、唯一性等元信息,从而在运行时提供强有力的类型保障和数据校验能力。这种“契约式编程”模式使得后端服务更具可预测性和健壮性。尽管Mongoose内置了丰富的类型系统,但在某些场景下,标准类型不足以满足需求。比如我们需要支持货币金额、IP地址、GeoJSON坐标等特殊语义类型。为此,Mongoose允许开发者通过继承。

weixin_33628677的博客 1076

华为C语言笔试题(附答案)

华为C语言笔试题(附答案)     1、局部变量能否和全局变量重名?   答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "   局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。  

峰云四起 3036

头歌MySQL数据库实训答案 有目录

头歌java实训答案集数据库部分一条一条的写,可鼠标手动粘贴,除特定命令外未分大小写。 第1关:创建数据库 第2关创建表 第3关:使用主键约束 第4关:外键约束 第5关:添加常用约束 MySQL数据库 - 数据库和表的基本操作(一) 第1关:查看表结构与修改表名 第2关:修改字段名与字段数据类型 第3关:添加与删除字段 第4关:修改字段的排列位置 第5关:删除表的外键约束 MySQL数据库 - 数据库和表的基本操作(二) 第1关:插入数据 第2关:更新数据 第3关:删除数据 MySQL数据库 - 单表查询(

m0_67401761的博客 4万+

从零开始使用CubeMX配置STM32使用lwip实现httpd服务器以及使用vscode编辑阅读keil代码(三)

使用stm32搭载lwip实现HTTPd服务器

qq_30623327的博客 5933

利用Docker Compose简化openGauss多节点容器化部署

本文详细介绍了如何利用Docker Compose简化openGauss多节点容器化部署,从环境准备到配置文件编写,再到集群部署与验证,提供了一套完整的解决方案。通过Docker Compose,原本复杂的手动部署流程被大幅简化,显著提升了部署效率和可靠性,特别适合企业级开源数据库的高可用架构需求。

weixin_30338481的博客 60

信息奥赛课课通(C++)p154-1近似排序

试题描述 读入一对正整数,将这两个数之间(包括这两个数本身)的所有数按下述特别规则排序后输出,该特别规则是按两数倒过来的值进行比较决定其大小,如30倒过来为3,29倒过来为92,则29大于30. 输入要求 1行,包含两个用空格隔开的自然数,这两个自然数给出了待排序数的范围,其中1≤第一个数≤第二个数≤999999999,两个数之差不超过100. 输出要求 输出排序后的数据,每行输出...

mengdicfm的博客 7285

OpenClaw对接本地大模型:Llama3/Qwen/ChatGLM全适配,完全私有化部署

OpenClaw对接本地大模型,是企业级AI智能体落地的必经之路——它不仅解决了数据隐私和合规问题,还能大幅降低成本、提升响应速度、实现定制化。这篇文章我给大家完整拆解了两套部署方案:Ollama(新手首选,5分钟搞定)和vLLM(生产环境首选,高性能),覆盖了Llama3/Qwen/ChatGLM三大主流模型,还有真实的落地案例、高级优化、踩坑避坑指南,看完你就能零代码完成完全私有化的部署。从零开发自定义工具,给OpenClaw添加专属业务能力;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 809

CGAL AlphaShape算法(自适应Alpha值,二维版本)

CGAL AlphaShape算法(自适应Alpha值,二维版本)

dayuhaitang1的博客 2325

GDB交叉编译与问题解决:从零到精通的深度指南

完成后,GDB会安装到/usr/local/gdb-aarch64/bin,可以用aarch64-linux-gnu-gdb --version检查。:得有支持目标架构的交叉编译工具链,比如gcc-arm-none-eabi(用于ARM裸机)或aarch64-linux-gnu-gcc(用于ARM Linux)。:在配置工具链时,运行aarch64-linux-gnu-gcc --version检查版本,确保工具链没问题。这种场景下用GDB调试,就像在荒野求生,但别慌,GDB依然是你的好伙伴。

大模型大数据攻城狮的专栏 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

下一篇: koa中间件梳理(洋葱模型)
蛮吉(lambda)
博客等级 码龄7年 2粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值