MongoDB如何构造查询获取按销量从高到低排序的畅销商品列表
MongoDB 畅销商品列表查询实现
你之前的查询仅完成了字段投影,未实现数组拆分、销量汇总、排序和结果格式化的逻辑,可使用如下聚合查询实现需求:
db.orders.aggregate([ // 拆分shopping_cart数组,将每个商品转为独立文档 { $unwind: "$shopping_cart" }, // 按商品名称分组,累加计算每个商品的总销量 { $group: { _id: "$shopping_cart.product_name", total_sold: { $sum: "$shopping_cart.qty" } } }, // 按总销量从高到低排序,同销量场景可自定义补充第二排序字段 { $sort: { total_sold: -1 } }, // 将排序后的商品名聚合为统一数组,输出指定格式 { $group: { _id: null, top_selling_products: { $push: "$_id" } } }, // 移除结果中不需要的默认_id字段 { $project: { _id: 0 } } ])
如果需要限制返回的Top商品数量,可以在排序步骤后添加{ $limit: N }阶段,N为你需要的商品数量。
内容的提问来源于stack exchange,提问作者mne_web_dev
相关产品推荐
相关产品推荐

