Мои документы:
_id:"DwNMQtHYopXKK3rXt"
client_id:"ZrqKavXX8ieGpx5ae"
client_name:"luana"
companyId:"z3ern2Q7rdvviYCGv"
is_active:true
client_searchable_name:"luana"
status:"paid"
items:Object
id:912602
gross_amount:1000
type:"service"
description:"Pedicure com Zé (pacote)"
item_id:"bjmmPPjqKdWfwJqtC"
user_id:"gWjCskpHF2a3xHYy9"
user_id_commission:50
user_id_amount:0
use_package:true
quantity:1
item_costs:Array
discount_cost:Object
type:"package"
value:100
charge_from:"company_only"
entity_id:"LLRirWu5DabkRna7X"
created_at:2019-10-29T10:35:39.493+00:00
updated_at:2019-10-29T10:36:42.983+00:00
version:"2"
created_by:"2QBRDN9MACQagSkJr"
amount:0
multiple_payment_methods:Array
closed_at:2019-10-29T10:36:52.781+00:00
Итак, я сделал $ проект:
{
_id: 0,
closed_at: 1,
serviceId: "$items.item_id",
serviceAmount: "$items.gross_amount",
discounts:"$items.discount_cost"
}
А потом $ group
_id: {
month: { $month: "$closed_at" },
serviceId: "$serviceId",
discountType: "$discounts.type",
discountValue: "$discounts.value"
},
totalServiceAmount: {
$sum: "$serviceAmount"
}
}
Я пытаюсь сделатьсумма значений категорий в моей БД в $, на самом деле я отфильтровал все данные, поэтому у меня есть именно то, что мне нужно, вот так;
_id:Object
"month":10
"serviceId":"MWBqhMyW8ataGxjBT"
"discountType":""courtesy"
"discountValue":100
"totalServiceAmount":5000
Итак, у меня есть 5 типов скидок на мою БД, они: Процент (скидка в процентах), вежливость (сделайте сумму обслуживания 0), пакет (сделайте сумму обслуживания 0), брутто (валовая скидка стоимости) и ноль, если нет скидки o стоимости.
так, если тип скидки:
Процент: мне нужно вычесть discountValue для totalServiceAmount (discountValue будет в процентах, как мне это вычесть, если total serviceAmount имеет значение брутто)
Вежливость и пакет: мне нужно преобразовать totalServiceAmount в значение 0.
Брутто: мне нужно вычесть discountValue для totalServiceAmount.
Null: просто разрешить totalServiceAmount.
Я пытался так, чтобысделать тест, но я действительно не знаю, правильно ли я иду по правильному пути, результат был нулевым для каждой суммы со скидкой.
{
$project: {
{
amountWithDiscount: {
$cond: {
if: {
$eq: ["$_id.discountType", "null"]
},
then: "$serviceAmount", else: {
$cond: {
if: {
$eq: ["$_id.discountType", "gross"]
},
then: {
$subtract: ["$serviceAmount", "$_id.discountValue"]
},
else: "$serviceAmount"
}
}
}
}
}
Имеет смысл?