Из того, что я вижу, я думаю, что вы хотите $let
.
Вы можете создать локальную переменную, которая может использоваться внутри выражения $let
.
Попробуйте это:
db.Collection.aggregate([
{
$project: {
all_bills: ‘$all_count’,
settled_bills: { $size: ’$settled’ },
overdue_bills: { $size: ‘$overdue’ },
settled_percentage: {
$let : {
vars : {
local_settled_bills : { $size : "$settled"},
local_overdue_bills : { $size : "$overdue"}
},
in : {
$divide : ["$$local_settled_bills","$$local_overdue_bills"]
}
}
}
}
}
])
Здесь вы создаете локальные переменные в выражении vars
, которые можно использовать внутри (и только внутри выражения in
). Я создал local_settles_bills
и local_overdue_bills
, которые можно использовать в выражении in
с префиксом $$
.
Надеюсь, это поможет вам.
Читайте MongoDb $ let документация для получения подробной информации о $ let.
Кроме того, вы также можете сделать это:
db.Collection.aggregate([
{
$project: {
all_bills: ‘$all_count’,
settled_bills: { $size: ’$settled’ },
overdue_bills: { $size: ‘$overdue’ },
settled_percentage: {
$divide : [{"$size" : "$settled_bills"},{"$size":"$overdue_bills"}]
}
}
}
])