【问题标题】:MongoDB Compass: How can I perform a SQL join / Mongoose populate?MongoDB Compass:如何执行 SQL 连接/Mongoose 填充?
【发布时间】:2023-04-11 04:30:01
【问题描述】:

我有一个名为Post 的集合,其中有一个名为makeupProduct 的ID 字段。此 ID 字段是我的 MakeupProduct 集合的外键。

在 MongoDB Compass 中,我正在尝试查找所有帖子

  1. productUrl === null
  2. 连同它一起填充化妆记录

这可能吗?

我有第一个过滤器,但不知道如何写其余的。

【问题讨论】:

  • 您可以使用聚合(Compass 中的聚合选项卡)使用聚合管道阶段 $lookup相关 集合之间进行 join。在 Compass 中,您将能够进行查询,并且您可能需要进行额外的处理以更新数据。
  • 这能回答你的问题吗? How to join multiple collections with $lookup in mongodb ,您检查该链接以了解如何使用 MongoDB 原生的 $lookup 运算符。但是如果你使用 Node.Js 代码中的猫鼬驱动程序,你可以使用 .populate() 来完成类似的工作。尝试使用 robo3T,它可以免费使用 + 更好,并且给你一种 shell 的感觉。

标签: mongodb


【解决方案1】:
db.Post.aggregate([
    {
        $match: {
            productUrl: null
        }
    },
    {
        $lookup: 
        {
            from: "MakeupProduct",
            localField: "makeupProduct",
            foreignField: "_id",
            as: "makeupProduct"
        }
    },
    {
        $set: {
            makeupProduct: {
                $arrayElemAt: ["$makeupProduct", 0]
            }
        }
    }
])

【讨论】:

  • $set 部分是干什么用的?
猜你喜欢
  • 2020-02-10
  • 2019-06-25
  • 1970-01-01
  • 2020-10-14
  • 2020-10-22
  • 2023-02-24
  • 2021-03-03
  • 2017-07-23
  • 2011-08-23
相关资源
最近更新 更多