Учитывая следующий запрос, какой лучший способ использовать $$ priceToInflationRatio, чтобы помочь создать несколько вычисленных полей? Из того, что я прочитал в $ let, похоже, работает только для создания одного поля - я бы хотел использовать переменные во всей моей секции $ project. Это возможно?MongoDB Совокупная переменная для создания нескольких полей?
db.books.aggregate([
{$project: {
'priceInflationresult': {
$let: {
vars: {
'priceToInflationRatio': {
$multiply: [{'$divide': [{'$subtract': ['$price', 1]}, 5]}, 10]
}
},
in: {
'$cond': [
{'$gt': ['$price', 5]},
{'$mod': ['$$priceToInflationRatio', 1]},
1
]
},
}
}
}}
])
Спасибо за ваш пример. Я использовал несколько этапов проекта, чтобы обойти это пока. Хотелось иметь верхний уровень $ let, или что-то подобное. Также интересно рассмотреть решение поддокумента, я об этом не думал. Таким образом, я мог бы ссылаться на недавно созданный суб-документ в последующем $ let. Являются ли несколько $ let или $ проектов примерно эквивалентными по производительности, или есть преимущество для одного над другим? –
Я не мог сказать, насколько это важно. Оба должны быть быстрыми. Лучшее руководство должно быть вашим собственным тестом, но я предполагаю, что разница достаточно мала, чтобы использовать любой способ, который вам легче поддерживать, может быть лучше. – wdberkeley