Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Оператор $multiply
вычисляет продукт числовых выражений и поддерживается в операциях агрегирования. Это полезное средство для получения вычисляемых полей или выполнения арифметики в конвейерах агрегирования.
Синтаксис
{
$multiply: [ <expression1>, <expression2>, ... ]
}
-
<expression1>
: допустимое выражение, разрешающее число. -
<expression2>
: допустимое выражение, разрешающее число. -
...
: дополнительные выражения, каждое разрешение на число.
Пример
Пример 1. Умножение поля константой
В этом примере показано, как удвоить значение fullSales
поля:
db.collection.aggregate([
{
$project: {
sales: 1,
doubleSales: { $multiply: ["$sales.fullSales", 2] }
}
}
])
Результат включает исходное sales
поле и новое полеdoubleSales
, которое в два раза больше.sales.fullSales
При этом будут выведены следующие выходные данные:
[
{ "_id": 1, "sales": { "fullSales": 100 }, "doubleSales": 200 },
{ "_id": 2, "sales": { "fullSales": 250 }, "doubleSales": 500 },
{ "_id": 3, "sales": { "fullSales": 400 }, "doubleSales": 800 }
]
Пример 2. Вычисление общих скидок во время акции
В этом примере вычисляется общая скидка на повышение в категории "DJ Turntables":
db.collection.aggregate([
{
$project: {
promotionEvents: 1,
totalDiscount: {
$multiply: [
{ $arrayElemAt: ["$promotionEvents.discounts.discountPercentage", 0] },
"$sales.salesByCategory.totalSales"
]
}
}
}
])
Поле totalDiscount
является производным путем умножения первого процента скидки от массива promotionEvents
со значением totalSales
. При этом будут выведены следующие выходные данные:
[
{
"_id": 4,
"promotionEvents": {
"discounts": [{ "discountPercentage": 0.10 }]
},
"sales": { "salesByCategory": { "totalSales": 5000 } },
"totalDiscount": 500
},
{
"_id": 5,
"promotionEvents": {
"discounts": [{ "discountPercentage": 0.15 }]
},
"sales": { "salesByCategory": { "totalSales": 10000 } },
"totalDiscount": 1500
}
]
Пример 3. Область вычислений прямоугольника
В этом примере вычисляется область прямоугольника с учетом его width
и height
:
db.collection.aggregate([
{
$project: {
width: 1,
height: 1,
area: { $multiply: ["$dimensions.width", "$dimensions.height"] }
}
}
])
Полученное area
поле является продуктом прямоугольника width
и height
. При этом будут выведены следующие выходные данные:
[
{ "_id": 6, "dimensions": { "width": 5, "height": 10 }, "area": 50 },
{ "_id": 7, "dimensions": { "width": 8, "height": 12 }, "area": 96 },
{ "_id": 8, "dimensions": { "width": 3, "height": 7 }, "area": 21 }
]
Ограничения
- Оператор
$multiply
работает только с числовыми выражениями. Использование его с нечисловыми значениями приводит к ошибке. - Будьте осторожны с проблемами переполнения или точности при работе с большими числами или арифметикой с плавающей запятой.
Связанный контент
- Ознакомьтесь с вариантами миграции из MongoDB в Azure Cosmos DB для MongoDB (vCore)
- Дополнительные сведения о совместимости компонентов с MongoDB