【问题标题】:how to Access nested Arrays in MongoDB?如何访问 MongoDB 中的嵌套数组?
【发布时间】:2020-05-14 09:34:52
【问题描述】:

我在 MongoDB 中有一个名为 Product 的文档。产品有一个类别数组,类别有一个子类别数组。

我正在尝试完成两件我遇到困难的事情。 1:检索给定产品ID的类别[]。例如:

  • products/10/categories -> categories[]

2:检索给定产品 ID 和类别 ID 的子类别[]。例如:

  • products/10/categories/11/subcategories -> 子类别[]

我的架构如下:

Products : [
{
    "id": "productId",
    "name": "productName",
    "price": "productPrice",
    "Categories": [
        {
            "_id": "catId",
            "name": "catName",
            "Subcategories": [
                {
                    "_id": "subcatId",
                    "name": "subcatName"
                },
                {
                    "_id": "subcatId",
                    "name": "subcatName"
                },
            ]
        },
        {
            "_id": "catId",
            "name": "catName",
            "Subcategories": [
                {
                    "_id": "subcatId",
                    "name": "subcatName"
                },
                {
                    "_id": "subcatId",
                    "name": "subcatName"
                },
            ]
        }
    ]
}

]

任何帮助将不胜感激!谢谢!

【问题讨论】:

    标签: mongodb mongoose mongodb-query nosql nestjs


    【解决方案1】:

    对于你的第一个问题,你可以这样写查询

    db.collection.aggregate([
      {
        $match: {
          "id": "productId"
        }
      },
      {
        $unwind: "$Categories"
      },
      {
        $project: {
          "_id": "$Categories._id",
          "name": "$Categories.name"
        }
      }
    ])
    

    对于您的第二个查询,请执行此操作

    db.collection.aggregate([
      {
        $match: {
          "id": "productId"
        }
      },
      {
        $unwind: "$Categories"
      },
      {
        $match: {
          "Categories._id": "catId"
        }
      },
      {
        $unwind: "$Categories.Subcategories"
      },
      {
        $project: {
          _id: "$Categories.Subcategories._id",
          name: "$Categories.Subcategories.name"
        }
      }
    ])
    

    【讨论】:

    • 已经完成了。我能再问你一个关于使用聚合更新的问题吗?
    • 如果需要您发布更多详细信息,您可以在此处发布另一个问题并分享链接,我很乐意提供帮助
    猜你喜欢
    • 1970-01-01
    • 2022-05-08
    • 2018-08-16
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多