【问题标题】:I am trying to get retrive data from mongodb but not getting expected output我正在尝试从 mongodb 检索数据但没有得到预期的输出
【发布时间】:2022-02-12 13:39:42
【问题描述】:

数据库数据 -

[{
    title: "Vivo X50",
    category: "mobile",
    amount: 35000

},
{
    title: "Samsung M32",
    category: "mobile",
    amount: 18000

},
{
    title: "Lenovo 15E253",
    category: "laptop",
    amount: 85000

},
{
    title: "Dell XPS 15R",
    category: "laptop",
    amount: 115000
}]

预期输出:

[{
    category: "mobile",
    qty: 2,
    totalAmount: 53000
},
{
    category: "laptop",
    qty: 2,
    totalAmount: 200000
}]

我正在运行的代码(使用猫鼬)

let products = await Product.aggregate([
    {
      $project: { _id: 0, category: 1, amount: 1 },
    },
    {
      $group: {
        _id: "$category",
        qty: { $sum: 1 },
        totalAmount: { $sum: "$amount" },
      },
    },
  ]);

我得到的结果。

[
{
"_id": "laptop",
"count": 2,
"totalSum": 200000
},
{
"_id": "mobile",
"count": 2,
"totalSum": 53000
}
]

您可以清楚地看到我能够获得正确的数据,但我还想要正确的名称类别而不是 _id。请帮帮我。提前致谢

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:

    您需要$project 作为最后阶段来装饰输出文档。

    {
      $project: {
        _id: 0,
        category: "$_id",
        qty: "$qty",
        totalAmount: "$totalAmount"
      }
    }
    

    同时,第一阶段$project不需要。

    db.collection.aggregate([
      {
        $group: {
          _id: "$category",
          qty: {
            $sum: 1
          },
          totalAmount: {
            $sum: "$amount"
          }
        }
      },
      {
        $project: {
          _id: 0,
          category: "$_id",
          qty: "$qty",
          totalAmount: "$totalAmount"
        }
      }
    ])
    

    Sample Mongo Playground

    【讨论】:

      【解决方案2】:

      您可以使用以下查询来获得预期的输出。干杯~

      await Product.aggregate([
        {
          $group: {
            _id: "$category",
            qty: {
              $sum: 1
            },
            totalAmount: {
              $sum: "$amount"
            },
            
          },
          
        },
        {
          $addFields: {
            category: "$_id"
          }
        },
        {
          $project: {
            _id: 0
          },
          
        }
      ])

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 2019-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多