【问题标题】:Mongoose unwind猫鼬放松
【发布时间】:2020-07-18 03:43:23
【问题描述】:

我的订单数据如下

          {
            orderStatus: 'Paid',
            orderItems:
                [{
                    productDeliveryProvider: 'Pending Assignment',
                    productDispatchStatus: 'Pending Assignment',
                    ImageName: 'BRC003.jpeg'
                },
                {
                    productDeliveryProvider: 'Pending Assignment',
                    productDispatchStatus: 'Pending Assignment',
                    ImageName: 'BRC003.jpeg'
                },
                {
                    productDeliveryProvider: 'Paid',
                    productDispatchStatus: 'Paid',
                    ImageName: 'BRC004.jpeg'
                }],
            orderNumber: '#15947327249455',
            
        }

我希望我的最终结果如下

 {
            orderStatus: 'Paid',
            orderItems:
                [{
                    productDeliveryProvider: 'Pending Assignment',
                    productDispatchStatus: 'Pending Assignment',
                    ImageName: 'BRC003.jpeg'
                },
                {
                    productDeliveryProvider: 'Pending Assignment',
                    productDispatchStatus: 'Pending Assignment',
                    ImageName: 'BRC003.jpeg'
                }],
            orderNumber: '#15947327249455',

        },
 {
            orderStatus: 'Paid',
            orderItems:
                [
                {
                    productDeliveryProvider: 'Paid',
                    productDispatchStatus: 'Paid',
                    ImageName: 'BRC004.jpeg'
                }],
            orderNumber: '#15947327249455',

        }

任何人都可以帮助我在 orderItems 上执行 $unwind 后如何进行分组。最初我的订单中有所有产品,但在 1 被取消后,我想显示待处理和已付款的订单,因为它是部分分配的

【问题讨论】:

    标签: mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:

    一个示例解决方案将$unwind$group 元素返回,但方式不同。例如:

    db.getCollection('orders').aggregate([
      // Unwind on "orderItems".
      {$unwind: '$orderItems'},
      {$group: {
        // Group by "orderItems.productDispatchStatus".
        _id: {_id: '$_id', productDispatchStatus: '$orderItems.productDispatchStatus'},
        orderItems: {$push: '$orderItems'},
    
        // Add all other fields.
        orderStatus: {$first: '$orderStatus'},
        orderNumber: {$first: '$orderNumber'}
      }},
      {$project: {
        // Map "_id" back to the original.
        _id: '$_id._id',
    
        // Add all other fields.
        orderStatus: 1,
        orderItems: 1,
        orderNumber: 1
      }}
    ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 2017-10-08
      • 2020-04-24
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多