【问题标题】:How to iterate array inside the object using mongodb如何使用 mongodb 在对象内迭代数组
【发布时间】:2019-11-03 06:08:09
【问题描述】:

我尝试使用 mongodb 迭代对象键值内的数组。但它不起作用。如何实现它。

数据库代码


【问题讨论】:

    标签: javascript mongodb mongoose aggregation-framework


    【解决方案1】:

    你可以使用下面的聚合

    db.product.aggregate([
      { "$lookup": {
        "from": "category",
        "localField": "id",
        "foreignField": "_id",
        "as": "ordersetails"
      }},
      { "$project": {
        "product_name": 1,
        "product_image": { "$arrayElemAt": ["$product_image", 0] },
        "ordersetails": { "$arrayElemAt": ["$ordersetails.name", 0] }
      }}
    ]).toArray()
    

    【讨论】:

    • 如果ordersdetails中有多个记录,则无法使用。
    • @RishabhGarg 请检查localFieldforeignField。它针对另一个集合的_id,这意味着该记录是唯一的。希望你能得到它。
    • @Fanpark 是的,是的。错过了_id。
    【解决方案2】:

    如果您在 orderdetails 数组中有多个对象,则可以使用以下查询:

    db.product.aggregate([
        {
          $lookup: {
            from: "category",
            localField: "category_id",
            foreignField: "id",
            as: "ordersetails"
          }
        },
        {
          $project: {
            product_name: 1,
            product_image: { $arrayElemAt: ["$image", 0] },
            ordersetails: 1
          }
        }, 
        {
           $unwind: "ordersetails"
        },
        {
          $project: {
            product_name: 1,
            product_image: 1,
            ordersetails: "$ordersetails.name"}
          }
        }, 
      ]).toArray();
    

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多