mongoose 主键关联的表,自动带出另一张表的数据

Node.js | MongoDB 入门讲解 & Mongoose 模块的初步应用 既然我们学习了NodeJS,正式进入了后端开发的领域,那么数据库的知识就必不可少了,这篇文章我们将去学习如何在NodeJS中应用非关系型数据库MongoDB,后期也会学习如何应用关系型数据库MySql。由于本专栏是针对NodeJS的,所以本篇文章侧重于讲解NodeJS如何连接并操作MongoDB数据库,并不会对MongoDB的安装配置以及原生的操作语法做过多的讲解(这些网上已经有很多的教程了,想深入了解的可自行搜索)。 阅读详情

有这样两张表


addon_passwordbox_category
'use strict'
var mongoose = require('mongoose'),
  Schema = mongoose.Schema

/***
 * 加密后的密码表
 *2018年10月18日14:41:23
 */
var addon_passwordbox_list = new Schema({
  email: String,             // 用户邮箱
  title: String,             // 密码的标题
  encryptedPassword: String, // 加密后的密码
  catId: {type: Schema.Types.ObjectId, ref: 'addon_passwordbox_category'},             // addon-passwordbox-category表中对应的类别的_id
  desc: String,              // 密码的描述
  CreatedDate: {type: Date, default: Date.now()}         // 创建时间
})

mongoose.model('addon_passwordbox_list', addon_passwordbox_list)

'use strict'
var mongoose = require('mongoose'),
  Schema = mongoose.Schema

/***
 * 密码的分类表
 *2018年10月18日14:41:23
 */
var addon_passwordbox_category = new Schema({
  email: String,             // addon-passwordbox-list表中的_id
  name: String,              // 没有加密的密码
  desc: String,              // 类别的描述
  CreatedDate: {type: Date, default: Date.now()}          // 创建时间
})

mongoose.model('addon_passwordbox_category', addon_passwordbox_category)

addon_passwordbox_list

二张表使用catId作为主键关联 现在查 addon_passwordbox_list 表时要自动带出关联的addon_passwordbox_category表的数据 

使用 

populate()

代码如下:

 findAllByCondition: function (condition, callback) {
    addon_passwordbox_list
      .find(condition, {__v: 0})
      .lean()
      .populate('catId', 'id name')
      .exec(function (err, reply) {
        if (err) {
          callback(err || new Error('find all by conditon error'))
        } else {
          callback(null, reply)
        }
      })
  },

此外还可以这样用

.populate({
  path: 'fans',
  match: { age: { $gte: 21 }},
  select: 'name -_id',
  options: { limit: 5 }
})
nodejs+mongoose简单关联+增删改查 http://blog.youkuaiyun.com/tangjiarao/article/details/50467804 立即下载

相关推荐

GD32F4系列定时器正交译码器实战:用TIMER1读取旋转编码器信号(附完整代码)

本文详细介绍了GD32F4系列定时器正交译码器的实战应用,重点讲解如何使用TIMER1模块高效读取旋转编码器信号。内容涵盖硬件连接、定时器配置、方向判断与速度计算等关键环节,并提供了完整的代码实现和优化建议,帮助开发者快速掌握GD32微控制器在工业控制和消费电子领域的编码器接口设计。

weixin_29169505的博客 202

nodejs之mongoose的主键变更

主键(ObjectId),属性名为_id,每个Schema都会默认配置这个属性,可通过下述方式改变此属性: var mongoose = require('mongoose'); var ObjectId = mongoose.Schema.Types.ObjectId; var StudentSchema = new Schema({}); //默认会有_id:Ob

suns的专栏 4294

别再为EPI形变头疼了!FSL的topup+eddy实战保姆级教程(含AP/PA数据采集要点)

本文详细介绍了如何使用FSL的topup和eddy工具解决EPI形变问题,包括数据采集要点、参数设置和实战操作步骤。通过AP/PA双编码数据和精确的形变场估计,有效矫正MRI图像中的几何畸变,提升弥散数据质量。特别适合需要处理高场强MRI数据的研究人员和技术人员。

weixin_28725949的博客 401

Node.js环境中MongoDB设置自增主键并获取主键

MongoDB本身没有自增主键设置,这里借助另外一个文档用于保存自增主键。 const mongoose = require('mongoose'); const DB_URL = "mongodb://localhost/test"; mongoose.connect(DB_URL, { useNewUrlParser: true }); mongoose.Promise = Promise...

DAWN的博客 2586

六轴机器人正解

采用的是John H.Craig在【机器人学导论】中的改进DH模型 1.六轴坐标系 2.DH参数 i αi−1\alpha_{i-1}αi−1​ ai−1a_{i-1}ai−1​ did_idi​ θi\theta_iθi​初值 1 0 0 0 0 2 -90 a1a_1a1​ 0 -90 3 0 a2a_2a2​ 0 -90 4 -90 a3a_3a3​ d4d...

m0_37581770的博客 2511

RK3566添加ffpeg【Buildroot系统】

有很多人都发现了RK3566系列的芯片是不可以直接使用ffmpeg官网源码的!会报错: Not a video capture device. /dev/video0: No such device 接下来我们就来解决这个问题!!

honmy18的博客 4070

使用Mongoose populate实现多表关联存储与查询,内附完整代码

和普通的属性不同的是,我们需要指定引用属性的类型和引用的模型名称。这里有一个不符合常理的地方,就是我在这里把故事的作者设为了故事的粉丝~~方便的将多个表关联起来,实现一对多、多对多的数据表存储和查询功能。本文已最常见的一对多关系模型,介绍简单的数据模型定义、存储、查询。如果学习过关系型数据库的同学,可能对这里非常容易了解。可以非常简单的使用面向对象的方式完成数据的存取。是一种内置的特殊类型,专门用来表示对象的ID。方法存储对象的数据到数据库中。,也就是典型的一对多关系。数组属性,存储与其关联的。...

魏大大 4848

告别手动群发!用IDA Pro和CE搞定企业微信4.1.38.6011的HOOK开发(附完整代码)

本文详细介绍了如何利用IDA Pro和Cheat Engine进行企业微信4.1.38.6011的HOOK开发,实现自动化群发功能。从逆向工程环境配置、关键函数定位到HOOK框架设计,提供完整代码示例,帮助企业提升运营效率。

weixin_42533120的博客 479

Mongoose 两张表相互关联

假设现在要做一个博客系统, 用到两张表,一张是 分类表,一张是表分类表的定义 , 一个分类能有多个文章文章表的定义。

weixin_44765046的博客 850

33、密码学中的选择密文攻击与Cramer - Shoup加密方案

本文详细介绍了密码学中选择密文攻击的背景及其对Cramer-Shoup公钥加密方案的影响。该方案在决策Diffie-Hellman假设和抗碰撞哈希函数的基础上,能够有效抵御自适应选择密文攻击,并且其安全性无需依赖随机预言机模型。文章还分析了Cramer-Shoup方案的设计原理、加密与解密过程,以及其在标准假设下的安全性证明方法。此外,通过一系列相关练习,帮助读者进一步理解密码学概念如密文不可区分性、ElGamal加密、Goldwasser-Micali方案等。最后,文章展望了密码学的未来发展趋势,包括量子

vscode6remote的博客 100

全网最全RT-DETR涨点改进,基于官方源码1:1还原,在Ultralytics项目中配置rtdetr-r18、rtdetr-r34、rtdetr-r50、rtdetr-r101版本~小论文大论文必备

本文详细介绍了如何将RT-DETR的ResNet18/34/50/101/154版本移植到ultralytics项目中。主要内容包括:1) RT-DETR核心特点,如高效混合编码器、IoU感知查询选择等;2) 提供完整ResNet核心代码;3) 分步配置指南,包括创建模块文件和修改tasks.py;4) 各版本yaml配置文件的创建方法。该方案可帮助研究者快速实现RT-DETR改进,适用于目标检测相关论文研究。所有配置文件均可正常运行,为实验部署提供了便利。

Ai缝合怪、助力小伙伴高效发论文 3937

node.js使用mongoose,8个表联合查询,返回分页记录及记录总数

mongoose多表联合查询

oldcoder2000的博客 571

OpenClaw实战系列07:定时任务与自动化工作流实战——让AI从“被动响应”到“主动执行”

通过本文的学习,你已经将 OpenClaw 从“被动应答”升级为“主动执行”的自动化引擎。定时简报:每天8点自动生成行业简报推送飞书/钉钉GitHub事件触发:PR合并自动触发Code ReviewAgent间协作:数据采集→分析→报告全自动流水线系统监控:定时检查服务器状态,异常自动告警核心收获掌握 OpenClaw 内置 Cron 系统的三种调度模式学会 Webhook 配置和事件触发机制理解 Agent 间通信的两种方式(sessions_spawn / sessions_send)

PeterPan的博客 691

Mongoose populate实现多表关联存储与查询

和普通的属性不同的是,我们需要指定引用属性的类型和引用的模型名称。mongodb不是传统的关系型数据库,我们可以使用monogoose方便的将多个表关联起来,实现一对多、多对多的数据表存储和查询功能。我们创建一个Person模型和一个Story模型,其中一个Person对应多个Story,也就是典型的一对多关系。创建一个名为xiaoming的Person对象,然后再创建一个Story,并使其引用Person._id属性。这里有一个不符合常理的地方,就是我在这里把故事的作者设为了故事的粉丝~~

Mr. David 专栏 959

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

StoryBooks 数据建模指南:Mongoose 里 User 与 Story 的关联设计与 populate 用法

StoryBooks 是一个基于 Node.js、Express 与 MongoDB 的故事记录应用:用户通过 Google OAuth 一键登录,即可创建公开或私密的故事。本文以 StoryBooks 的 Mongoose 数据建模为主线,完整拆解 User 与 Story 的关联设计,并结合 4 个真实路由场景讲透 populate 的用法,帮你快速掌握 MongoDB 里「一对多关联 + 关

gitblog_00372的博客 688

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Mongoose中的关联表查询 && 聚合查询

注:阅读此篇文章,需要有一定的Mongo基础。基本的不会再重复介绍。 例: 有两张表,一张是博客列表,另外一张是博客的标签表。现在我们要做两张表的插入和关联查询。 创建两张表的Schema 主表blog //博客schema var blogSchema = new mongoose.Schema({ title: {type: String}, //博客...

aihong5702的博客 448

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

mongodb在mongoose的操作下的多表查询

当一个表中的结构中有一个属性是另一个表的_id 其实质上是一个表的外键指向另一个表的主键 并且会涉及到多表查询相关信息 首先要在这个外键的表(集合)设置schema时为这个属性定义为如下: category: { type: mongoose.Schema.Types.ObjectId, ref: 'Category(主表的model)' } 在查询时为查到另...

shangsiqi1的博客 370

Mongoose 使用之 Population

Mongoose 使用之 Population 原创 陈纪年 Node.JS 2013/06/16 14:24 阅读数 1W 何为 Population 用过 MongoDB 的人应该都知道它是没有关系型数据库里的 join 特性的,这意味着当我们使用 MongoDB 读取某个 document 及其关联的 document 的字段的时候,变得尤为麻烦。 基于此,Mongoose 封装了一个 population 的功能,当你在定义 Schema 的时候指定了某个 field 是引用了另一个

嘿嘿 368

MongoDB、Mongoose使用教程

MongoDB 是一个开源基于文档的 NoSQL 数据库,使用文档导向的数据模型是一个,它以其高性能、高可用性和易扩展性而闻名,非常适合处理大量的分布式数据。它以 BSON(二进制 JSON)格式存储数据,这使得它在存储复杂数据结构时非常灵活。Mongoose 中的一切都始于结构(Schema),没有模型有一个默认 Id_id, 他是ObjectId()类型的模型(Model)是从 Schema 定义编译而来的奇特构造函数, 模型的一个实例称为 document。

前端探索者 1980

MongoDB学习day09--Mongoose aggregate 多表关联查询

Mongodb的aggregate应用之前已经说过了。 可以参考day06 Mongoose的aggregate函数应用 var mongoose=require('./db.js'); var OrderSchema=mongoose.Schema({   order_id:String,   uid:Number,   trade_no:String,   all_pric...

weixin_30794491的博客 177

mongoose入门学习

Mongoose 官方手册: https://docs.mongodb.com/manual/ 条件操作符 https://blog.youkuaiyun.com/csm0912/article/details/81178531 栗子: https://blog.youkuaiyun.com/qq_38671973/article/details/80687586 $or Model.find({$or:...

sinat_18474835的博客 452

mongodb、mongoose相关

mongodb相关MongoDB介绍MongoDB安装 mongodb中文文档 MongoDB介绍 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。M...

陈坚泓的博客 967

源码解读express-restify-mongoose深更新机制:updateDeep与moredots点路径合并全解析

express-restify-mongoose 是一个把 Mongoose 模型一键变身为 RESTful API 的服务库,而它最容易被忽视的能力,就是 `updateDeep` 深更新机制——配合 `moredots` 工具函数,把嵌套 JSON 自动合并成 MongoDB 的"点路径",让 PATCH 请求可以精准更新子文档里的单个字段。本文带你从源码层面完整看懂这套机制的工作原理。 #

gitblog_00036的博客 448
上一篇: 手把手教你撸个直播小程序
下一篇: 使用crypto.js进行信息加密解密
拿我格子衫来
拿我格子衫来 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄10年 6万+粉丝 858原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拿我格子衫来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值