Я пытаюсь собрать совокупность рецептов. Каждый рецепт в коллекции имеет поле calories
, которое представляет собой количество калорий в одной порции. Мне нужно найти рецепты с калориями, ближайшими к за 1, 2 и 3 порции. Я знаю, что вы не можете использовать оператор $ min так, как я сделал ниже, но он просто должен дать идею.Структура агрегации Mongo: поиск минимального значения в пределах прогнозируемых значений
[
{
$project: {
recipe: "$$ROOT",
"caloriesInOneServing": "$calories",
"caloriesInTwoServings": {$multiply: ["$calories", 2.0]},
"caloriesInThereServings": {$multiply: ["$calories", 3.0]}
}
},
{
$project: {
recipe: 1,
"caloriesInOneServingDiff": {$subtract: ["$caloriesInOneServing", 1000],
"caloriesInTwoServingsDiff": {$subtract: ["$caloriesInTwoServings", 1000],
"caloriesInThereServingsDiff": {$subtract: ["$caloriesInThereServings", 1000]
}
},
{
$project: {
recipe: 1,
//how do i find the min value among given fields?
minDiff: {$min: [$caloriesInOneServingDiff, caloriesInTwoServingsDiff, caloriesInThereServingsDiff]
}
},
{
$sort: { minDiff: -1 }
}
]
Вам будет лучше, если вы сможете показать образец документа с ожидаемым результатом. – styvane