【问题标题】:How can I populate array of objectIds in mongodb aggregate?如何在 mongodb 聚合中填充 objectIds 数组?
【发布时间】:2021-02-11 11:07:50
【问题描述】:

面临一个问题。

我有标签架构和课程架构。 课程有一组标签架构的 ObjectIds。

如何使用完整的架构详细信息填充这些标签。

Sample Tag Object
{
   _id: 44ffbvb...,
   title: "Tag 1
}

示例课程对象

_id: 44ffaab23231,
tags: [ObjectId(44ffbvb...),..]

如何在使用管道时填充那些在聚合中执行 $lookup 阶段的标签字段?

【问题讨论】:

    标签: mongodb populate


    【解决方案1】:
    
    // Tag: collection name `tags`
    [
      {
        _id: ObjectId("44ffbvb..."),
        title: "Tag 1"
      }
    ]
    
    // Course: collection name `courses`
    [
      {
        _id: ObjectId("44ffaab23231"),
        tags: [
          ObjectId("44ffbvb..."),
          ObjectId("44ffbvc..."),
          ObjectId("44ffbvd...")
        ]
      }
    ]
    
    // Query using aggregate pipeline
    db.courses.aggregate([
      {
        $match: {
          "name": "MongoDB"
        }
      },
      {
        $lookup: {
          from: "tags",
          let: { tags: "$tags" },
          pipeline: [
            {
              $match: {
                $expr: { $in: ["$_id", "$$tags"] }
              }
            },
            {
              $project: {
                "title": 1
              }
            }
          ],
          as: "tags"
        }
      }
    ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-14
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 2016-10-14
      • 2021-07-18
      相关资源
      最近更新 更多