Запрос объекта mon go - агрегация - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть json как это:

[
  {
    "Customer_ID": 1,
    "Order": [
      {
        "Item": "A",
        "Price": 2,
        "Quantity": 6
      },
      {
        "Item": "B",
        "Price": 3,
        "Quantity": 6
      },
      {
        "Item": "C",
        "Price": 2,
        "Quantity": 8
      }
    ]
  }
]

Я хочу, чтобы результат был примерно таким:

Общая цена умножения цены и количества

клиента , total_price

1,46

2,..

3,..

Может кто-нибудь, пожалуйста, помогите мне с запросом mon go.

1 Ответ

0 голосов
/ 22 февраля 2020

Я надеюсь, что это может помочь вам,

[{
    $project: {
        customer: '$Customer_ID',
        values: {
            $map: {
               input: '$Order',
               as: 'item',
               'in': { $multiply: [ '$$item.Price', '$$item.Quantity' ]}
            }
        }
    }
 }, 
 {
     $project: {
         customer:'$customer',
         totalValue: {
             $sum: '$values'
         }
     }
 }]

Позвольте мне объяснить, что здесь происходит, в первом $ проекте блоке, который мы проецируем Customer_ID как клиент и умножение каждого Заказа Цена и Количество как значения . Затем в следующем блоке $ project мы добавляем все элементы в массив values ​​ и проецируем как totalValue .

...