【问题标题】:Mongodb get element value from another collection based on its _idMongodb 根据 _id 从另一个集合中获取元素值
【发布时间】:2022-01-09 17:38:07
【问题描述】:

我正在尝试根据聚合中的结果 _id 获取元素值。

这是聚合:

$project: {
  _id: 0,
  brand: "$_id",
  "options": {
    $mergeObjects: "$ram"
  },
  sum: {
    $add: [
      "$sm",
      1
    ]
  }
}

我希望品牌从其他名为“brands”的集合中获取名称,如下所示

    [
  {
    "_id": ObjectId("617b0dbacda6cbd1a0403f68"),
    "SerialNumber": "45454234324",
    "name": "hp"
  },
  {
    "_id": ObjectId("617b0dbacda6cbd1a0403f69"),
    "SerialNumber": "azazz5245454az",
    "name": "asus"
  }]

我想要得到的是使用基于结果_id 的_id 的品牌名称。 使用 SQL 它是这样的:

Get brands.name where _id=brands._id

【问题讨论】:

  • 您可以使用$lookup 聚合阶段“加入”两个集合(使用公共字段进行匹配)。

标签: node.js mongodb mongodb-query aggregation-framework mean-stack


【解决方案1】:

我设法用 $lookup 做到了

{
                $lookup:
                {
                    from: "brands",
                    localField: "brand",
                    foreignField: "_id",
                    as: "brand"
                }
            },
            {
                $set: {
                    brand: "$brand.brand"     
                }
            },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    相关资源
    最近更新 更多