如何在 MongoDB 中执行 SQL Join 等效操作?

2024-03-29

如何在 MongoDB 中执行 SQL Join 等效操作?

例如,假设您有两个集合(用户和评论),我想提取 pid=444 的所有评论以及每个集合的用户信息。

comments
  { uid:12345, pid:444, comment="blah" }
  { uid:12345, pid:888, comment="asdf" }
  { uid:99999, pid:444, comment="qwer" }

users
  { uid:12345, name:"john" }
  { uid:99999, name:"mia"  }

有没有一种方法可以一次性提取某个字段的所有评论(例如 ...find({pid:444}) )以及与每个评论相关的用户信息?

目前,我首先获取符合我的条件的评论,然后找出该结果集中的所有 uid,获取用户对象,并将它们与评论的结果合并。看来我做错了。


从 Mongo 3.2 开始,这个问题的答案大多不再正确。添加到聚合管道的新 $lookup 运算符本质上与左外连接相同:

https://docs.mongodb.org/master/reference/operator/aggregation/lookup/#pipe._S_lookup https://docs.mongodb.org/master/reference/operator/aggregation/lookup/#pipe._S_lookup

来自文档:

{
   $lookup:
     {
       from: <collection to join>,
       localField: <field from the input documents>,
       foreignField: <field from the documents of the "from" collection>,
       as: <output array field>
     }
}

当然是蒙戈not关系数据库,开发人员正在谨慎推荐 $lookup 的特定用例,但至少从 3.2 开始,现在可以使用 MongoDB 进行连接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 MongoDB 中执行 SQL Join 等效操作? 的相关文章

随机推荐

  • Apache .htaccess:如何在 Firefox 上用斜杠重写反斜杠?

    如何重写反斜杠 带斜线 在火狐浏览器上 Chrome IE Safari Opera 已构建浏览器用斜杠重写反斜杠 但 Firefox 3 6 13 回归404错误页面 Why Firefox returns 404 error page
  • 使用history.pushState()更新URL中的参数

    我在用history pushState在我的页面上进行 AJAX 调用后 将一些参数附加到当前页面 URL 现在 在基于用户操作的同一页面上 我想使用相同或附加的参数集再次更新页面 URL 所以我的代码如下所示 var pageUrl w
  • 如何使用有状态 LSTM 和 batch_size > 1 布置训练数据

    背景 我想在 Keras 中对 有状态 LSTM 进行小批量训练 我的输入训练数据位于一个大矩阵 X 中 其维度为 m x n 其中 m number of subsequences n number of time steps per s
  • Bokeh - 如何使 HoverTool 工具提示粘在点击点上?

    下面的代码来自于Jupyter笔记本 https nbviewer jupyter org github draperjames PythonRef blob master Bokeh 20HoverTool 20Custom 20Tool
  • 在 Ubuntu 12.04 上为 Perl 5.14.2 LWP 安装新的 ca 证书

    我在尝试使用 LWP 连接到特定 https 网站时收到以下错误 LWP Protocol https Socket SSL connect attempt failed with unknown errorerror 14090086 S
  • 用于计算“该月最后一个星期四”等间隔的工具/库

    我正在寻找一个命令行工具或某种Python库 然后我可以包装 这样我就可以计算指定的日期 例如 该月的最后一个星期四 也就是说 我想让人们输入像上面这样的人类友好文本 并且它应该能够计算任何月 年 任何满足该要求的日期 有什么建议么 mxD
  • Java SSLEngine 示例 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我找到了一个如何实现 Java SSLEngine 的示例here http docs oracle
  • Github认为合并后分支不同

    我已经被这个 Github 问题撞到墙上了 终于来到这里寻求帮助 我的repo https github com KAPSARC KTAB有两个感兴趣的分支 master 这是当前实时发布的分支 并且alternate testing 这正
  • Magento 获取 phtml 文件上使用的布局

    有没有办法可以获取某个 phtml 文件使用的布局 就我而言 我想检查catalog list phtml 上使用的布局 我使用该信息对产品图像网格大小进行条件 if 我试着用谷歌搜索一下 但所有的结果只是解释有关 xml 布局的事情 我得
  • Grails 从域验证器获取会话变量

    我确信这是一个常见的情况 但我还没有找到任何答案 我有一个会话范围的变量 用于保存当前登录的用户 我需要通过域对象中的自定义验证器来执行条件验证 有没有办法在验证器中从会话范围中获取当前用户 或者是否有其他方法可以做到这一点 请记住我希望能
  • 子类如何调用与子类的方法名相同的超类的方法?

    include
  • 尝试为每个 Web 请求实现会话,没有当前会话上下文配置

    正如我在标题中所说 我想为每个网络请求实现会话 我的会话提供程序是这样配置的 我对更改此配置不感兴趣 public class SessionProvider public static SessionProvider Instance g
  • 向 Google Cloud Firestore 上传和下载文件

    我看到 Firebase 已经发布了一个新的测试版 名为 Cloud Firestore 在文档中 文档的所有操作都描述得非常好 但我无法找到有关使用 Android 将媒体文件上传和下载到 Cloud Firestore 的任何信息 有人
  • 重写 php 应用程序以获得 seo 友好的 url

    我有 php 应用程序 由于客户要求拥有 SEO 友好的 url 因此必须部分重写 我的链接如下 www mysite com articles en php artid 89 我必须更改其中的网址 www mysite com artic
  • 使用Subject 和Observable 之间有什么区别,各自的用途是什么?

    我了解了制作 Observable 的两种不同方法 第一个是一个主题 如下所示 file A const message new Subject file B message subscribe message gt console log
  • 保留解密加密数据库的解密密钥的最佳方法是什么?

    我有一个加密的数据库和解密密钥 如何使解密密钥免受黑客攻击 数据库黑客攻击和未经授权的 PC 访问 汇编中的硬编码 保存在注册表中 保存在内存中 此外 我需要加密数据的算法 在每个解密时间期限的安全性方面 执行此操作的最佳算法是什么 RSA
  • GNU 日期和自定义格式

    我有一些特定日期格式的字符串 我想使用 GNU date 命令 coreutils 8 20 来处理它们 我可以使用 FORMAT 字符串获取要输出的日期 但不能理解使用相同字符串输入的字符串 我很确定我错过了一些明显的东西 是什么赋予了
  • 函数返回与不返回?

    返回还是不返回 是函数的问题 或者说 这真的很重要吗 故事就这样开始了 我曾经编写如下代码 Type3 myFunc Type1 input1 Type2 input2 但最近我的项目学院告诉我 我应该尽可能避免编写这样的函数 并建议采用以
  • 如何从里程计/tf数据获取投影矩阵?

    我想将视觉里程计的结果与 KITTI 数据集提供的事实进行比较 对于地面中的每一帧 我都有一个投影矩阵 例如 1 000000e 00 9 043683e 12 2 326809e 11 1 110223e 16 9 043683e 12
  • 如何在 MongoDB 中执行 SQL Join 等效操作?

    如何在 MongoDB 中执行 SQL Join 等效操作 例如 假设您有两个集合 用户和评论 我想提取 pid 444 的所有评论以及每个集合的用户信息 comments uid 12345 pid 444 comment blah ui