Mongoose/mongoDB 查询连接..但我来自 sql 背景

2023-11-22

我来自 sql 背景,所以在连接表的 sql 中编写查询非常简单,但我想我在 mongoose/mongodb 中缺少它

基本上我知道 Subscriber_ID (它映射到用户集合中的文档)

我想拉出项目组,以及用户所属的所有项目,所以如果我用 pseduo sql 编写它,就会像这样

Select 
  ProjectGroup.title, 
  Project.Title 
FROM 
  ProjectGroup, 
  Project, 
  User 
WHERE 
  User.id = req.body.subscriber_id 
  AND Project.subscriber_id = User.id 
  AND  ProjectGroup.project_id = Project.id

必须有一种方法可以在 mongoose/mongodb 中进行类似的连接,因为类型映射到模式,对吧?

我的架构......

项目组架构

var ProjectGroupSchema = new Schema({
    title             : String
  , projects          : [ { type: Schema.Types.ObjectId, ref: 'Project' } ]
});

项目架构

var ProjectSchema = new Schema({
    title         : {type : String, default : '', required : true}
  , subscribers   : [{ type: Schema.Types.ObjectId, ref: 'User' }]
});

用户模式

var UserSchema = new Schema({
    first_name    : {type: String, required: true}
  , last_name     : {type: String, required: true}
});

谢谢你!


您仅差一步!

项目组架构:

var ProjectGroupSchema = new Schema({
    title             : String
});

项目架构:

var ProjectSchema = new Schema({
    title         : {type : String, default : '', required : true},
    group         : {type: Schema.Types.ObjectId, ref: 'ProjectGroup' },
    _users    : [{type: Schema.Types.ObjectId, ref: 'User' }]
});

用户架构:

var UserSchema = new Schema({
    first_name    : {type: String, required: true},
    last_name     : {type: String, required: true},
    subscribing   : [{type: Schema.Types.ObjectId, ref: 'Project' }]
});

然后您可以执行以下操作:

user.findById(req.userId)
     .populate('subscribing')
     .exec(function(err, user){
          console.log(user.subscribing);
     })

Or:

project.find({
        subscriber : req.userId
      })
     .populate('subscriber')
     .populate('group')
     .exec(function(err, projects){
          console.log(projects);
     })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongoose/mongoDB 查询连接..但我来自 sql 背景 的相关文章

  • 无法从 bash 脚本使用 nvm

    我正在尝试编写一个 shell 脚本来自动设置我的开发环境 安装 python nvm node mongo 等 我正在使用 nvm 来安装 Node js 它告诉您关闭并重新打开终端以开始使用 nmv 命令 我尝试获取 bashrc 和
  • 如何在socket.io Nodejs服务器上列出房间

    在问题取得进展后如何创建socket io多播组 https stackoverflow com questions 6616922 how to create socket io multicast groups 6624604 6624
  • 如何使用 Node.js 解析 JSON? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我应该如何使用 Node js 解析 JSON 是否有一些模块可以安全地验证和解析 JSON 你可以简单地使用JSON parse h
  • 使用mockery和sinon模拟类方法

    我正在学习使用带有 sinon 的节点模块模拟进行单元测试 仅使用模拟和普通类 我就可以成功注入模拟 不过 我想注入一个 sinon 存根而不是一个普通的类 但我在这方面遇到了很多麻烦 我试图嘲笑的班级 function LdapAuth
  • 如何获取从 Express (Node.js) 中的表单传递的数据

    我想获取使用表单从页面传递的数据 并在重定向的页面中使用该数据 我的客户端有这个表格
  • Node.js 上的 Connect 出现“无法 GET /”

    我正在尝试使用以下方式开始提供一些静态网页connect像这样 var connect require connect var nowjs require now var io require socket io var app conne
  • 异步减少返回承诺

    我有一个对象数组 我必须为来自异步函数的每个对象添加一个属性 我正在执行 Array reduce 来迭代每个元素并仅返回一个结果 具有新属性的一个对象数组 我有这个 const res await resultOne reduce asy
  • 将 Django +1.10 与 MongoDB 连接

    在过去的几个月里 有人为 MongoDB 更换了 Django 1 10 中的默认数据库引擎吗 我在谷歌上得到的所有信息都是六四年前的 最常见的结果包括mongodb 引擎这需要Django nonrel 来自 Django 1 5 的一个
  • Nodejs + npm,在ntfs分区安装模块

    我在安装 npm 模块时遇到问题 NodeJS 安装在 Windows 主机上 Virtual Box 上运行的 Ubuntu 11 10 上 我的项目文件位于 NTFS 分区上 我必须与 Windows 共享它们 当我尝试安装某些 npm
  • MongoDB 中两个集合之间的 Diff()

    我做过研究 如果这是一个重复的问题 我很抱歉 但其他问题的解决方案并不适合我 因此 我提出了一个新问题 使用 Javascript 比较两个集合的最佳方法是什么 我有数千个这样的 Mongo 文档格式的标头 url google com h
  • ER_ACCESS_DENIED_ERROR:用户 ''@'localhost' 的访问被拒绝(使用密码:NO)

    我有这个问题 我已经研究过但无法解决它 我想它与数据库权限有关 但我无法修复它 if error throw error Error ER ACCESS DENIED ERROR Access denied for user localho
  • MongoDB 如何选择候选计划

    我的应用程序中的查询速度很慢 创建两个索引后 它在本地数据库中使用它们以获得更好的性能 但是当我部署在生产数据库上时 它仍然使用原始索引 下面是我所做的 集合中的属性tasks team id project id created by a
  • 如何在浏览器同步中配置端口

    我有一个gulp任务运行于browser sync 默认情况下它运行在node js服务器的端口3000上 我想将默认端口更改为任何其他端口 例如3010 var gulp require gulp connect require gulp
  • react-native-screens:compileDebugKotlin 错误

    失败 构建失败并出现异常 什么地方出了错 任务 react native screens compileDebugKotlin 执行失败 评估任务 react native screens compileDebugKotlin 的属性 fi
  • Node.js es6 使用index.js 导出/导入

    我有以下文件夹结构 src index js lib test js dist examples example js src lib test js export default class Test src index js impor
  • Node.js 进行 rsa 加密的正确方法?

    我正在尝试创建一个 WS 来发出肥皂请求 在消息正文中有一个包含加密文本的字段 我有公钥来加密文本 但我获得的唯一结果是文本无法识别 我使用节点的加密模块来发出请求 并且文本已加密 但我不知道为什么没有正确加密 PS我用 openssl p
  • Sequelize 4.3.2 n:m(多对多)关联:未处理的拒绝 SequelizeEagerLoadingError

    我有 3 个模型 用户 项目 UserProject module exports function sequelize DataTypes var User sequelize define User title DataTypes ST
  • 如何按单个整数字段对 JSON 进行排序? [复制]

    这个问题在这里已经有答案了 我有以下 JSON title title order 0 order 9 order 2 JSON 包含很多字段 我如何根据字段对它们进行排序order field 我一直在寻找 Nodejs 中内置的东西 但
  • 如何在 Spring MongoDB 聚合上投影 DBRef?

    我在 MongoDB shell 中完成了以下聚合 以获取每个用户每种类型的警报数量 db getCollection alerts aggregate unwind son group id son son level level cou
  • 对于单主机 Node.js 生产应用程序来说,什么是好的会话存储? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话

随机推荐

  • 获取资源的大小

    我在用着getClass getResourceAsStream path 从捆绑资源中读取 在读取整个流之前如何知道文件大小 我无法访问它们getClass getResource path toURI 当它被打包时 这样就不起作用了 我
  • 如何使用Python在WebDriver中发送多个密钥?

    如何在WebDriver中制作Python代码以按键盘 或按键 上的Command Shift H按钮 Update info Pushing command to appium work queue au mainApp getTreeF
  • 在另一个目录中建立链接时符号链接不起作用?

    哇 我以前从未真正使用过符号链接 但这真的令人难以置信 bash 3 2 echo weird gt original txt bash 3 2 mkdir originals bash 3 2 mv original txt origin
  • HTTP RANGE 标头是否可与 Azure Blob 存储共享访问签名一起使用?

    我使用 Azure Blob 存储来存储媒体文件 并使用共享访问签名提供对这些文件的访问 在这方面一切进展顺利 但是 我有一个客户端应用程序需要 恢复 对这些文件的访问 并使用 HTTP RANGE 标头来执行此操作 当它发出这样的请求时
  • 无法将 WPF ListView 绑定到 ObservableCollection

    我第一次使用 WPF 特别是使用 ListView 我想将其绑定到 ObservableCollection 这是代码隐藏页面上的一个属性 现在我只是想了解一下事情是如何运作的 所以我尝试保持简单 不幸的是 我不太明白我的做法错在哪里 我的
  • Java int += double 语法惊喜[重复]

    这个问题在这里已经有答案了 我遇到了以下令人惊讶的一行 int x 7 x 0 5 显然是合法的语法 加法之后 x 仍然是 7 因此 double 被转换为 int 并向下舍入为 0 但这是在代码中没有任何显式转换的情况下完成的 还有人对此
  • 如何识别Sql Server中未命名的约束?

    动机 每当添加未命名的约束时 我都希望我们的门控签入失败 我在 Sql Server 中找不到未命名约束的任何专用名称 所以 这取决于模式匹配 我可以在 C 中完成 但模式是什么 涵盖大多数情况的最简单方法是检查 但它并不是 100 可靠
  • SpriteKit 捏合缩放相机

    我似乎无法在任何地方找到如何实现相机捏合来放大 SpriteKit 在我的 GameScene 中 我似乎无法使用以下命令在相机上运行缩放操作 let cameraNode SKCameraNode cameraNode position
  • Neo4j 匹配路径排除具有特定标签的节点

    我在检索 Neo4j 中的路径排除某些标签时遇到问题 例如 我有 gt h gt j a gt b gt c gt d gt i gt f gt g with h节点有一个Deleted label 我有疑问 MATCH path n gt
  • 尝试在 ggplot 中的直方图上应用颜色渐变

    我在 ggplot 中纠结于颜色 我正在尝试根据下面的排名列应用颜色渐变 我很确定这是颜色和填充或离散变量和连续变量之间的差异 我想要颜色如下面的 c 和 d 中的比例所示 但我最接近的尝试是 e 和 f 其中点是彩色的 但不是按渐变着色的
  • 捕获表单之外的鼠标/键盘事件(应用程序在后台运行)

    我有一个在后台运行的应用程序 最小化 任务托盘 我需要能够检测鼠标活动 点击 移动 以及键盘活动 考虑到我的窗口没有 聚焦 的限制 最好的方法是什么 看看这个图书馆全局鼠标键钩 它是 100 托管的 C 代码 用于安装全局鼠标和键盘挂钩 它
  • 将图像添加到 Pyinstaller 中的 .spec 文件

    有谁知道如何修改 spec使用创建的文件Makespec pyPyinstaller 的其中包含图像数据 MEIPASS2临时目录 我希望能够向我的 exe 添加图标 我已经完成了所写的here 但我只是不知道如何在其中添加我的数据 spe
  • 查找 HTML Canvas 上下文路径上的当前点?

    如果我有一个 HTML Canvas 上下文并且执行以下操作 ctx beginPath ctx moveTo 10 10 ctx lineTo 20 30 ctx closePath ctx stroke 在 10 10 和 20 30
  • rdtscp 的“半栅栏”行为是怎么回事?

    多年来 x86 CPU 支持rdtsc指令 读取当前CPU的 时间戳计数器 该计数器的确切定义随着时间的推移而发生变化 但在最近的 CPU 上 它是一个相对于挂钟时间以固定频率递增的计数器 因此它作为快速 准确的时钟的构建块或测量时间非常有
  • 限制分号来防止SQL注入?

    我发现 SQL 注入字符串通常是这样构造的 DROP DATABASE db 因此 如果我不允许在应用程序的输入中使用分号 这是否可以 100 防止任何 SQL 注入攻击 不 它不能防止 SQL 注入攻击 任何时候您在客户端或使用存储过程中
  • Postgresql - 与 string_agg 相反

    我正在寻找一个 postgresql 函数 它会做相反的事情string agg 我有一个电影表 其中标签列包含诸如 Action Adventure Drama Horror Sci Fi Action Horror Sci Fi 例如
  • 结合参考使用 Union

    在工作中 我一直使用 Linux 以及 C 11 和 C 14 的 GCC 编译器 在一些工作代码中 我使用联合来存储引用和指针 如下所示 仅简化为重要部分 struct MyStruct Stuff union double x doub
  • .NET Web API 2 OWIN Bearer Token Authentication 直接调用

    我的 Web Api 项目有问题 我的数据库中存储了文件 并希望在新窗口中直接调用它们来查看 保存 URL 如 api Files 5 5 是 FileId 我使用 Bearer Token 来处理我的一般 AJAX 请求 使用 Angul
  • 如何否定正则表达式中的特定单词? [复制]

    这个问题在这里已经有答案了 我知道我可以否定字符组 如 bar 但我需要一个正则表达式 其中否定适用于特定单词 所以在我的示例中如何否定实际的bar 而不是 酒吧中的任何字符 一个很好的方法是使用负前瞻 bar 负向先行结构是一对括号 左括
  • Mongoose/mongoDB 查询连接..但我来自 sql 背景

    我来自 sql 背景 所以在连接表的 sql 中编写查询非常简单 但我想我在 mongoose mongodb 中缺少它 基本上我知道 Subscriber ID 它映射到用户集合中的文档 我想拉出项目组 以及用户所属的所有项目 所以如果我