W MongoDB $multiply
Operator potoku agregacji mnoży liczby przez siebie i zwraca wynik.
Aby użyć $multiply
operatora, przekaż liczby do operatora w tablicy.
Argumenty mogą być dowolnymi poprawnymi wyrażeniami, o ile są rozwiązywane na liczby.
Przykład
Załóżmy, że mamy kolekcję o nazwie data
z następującym dokumentem:
{ "_id" : 1, "a" : 1000, "b" : 2, "c" : 3 }
Możemy użyć $multiply
operatora w potoku agregacji, aby pomnożyć dwie lub więcej z tych liczb.
Pomnóż 2 liczby
Oto przykład mnożenia dwóch liczb.
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $multiply: [ "$a", "$b" ] } }
}
]
)
Wynik:
{ "a" : 1000, "b" : 2, "result" : 2000 }
Pomnóż 3 liczby
I znowu, tyle że tym razem mnożymy wszystkie trzy liczby.
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
c: 1,
result: { $multiply: [ "$a", "$b", "$c" ] } }
}
]
)
Wynik:
{ "a" : 1000, "b" : 2, "c" : 3, "result" : 6000 }
Wartości ujemne
Liczby mogą być dodatnie lub ujemne.
Załóżmy, że do naszej kolekcji dodamy następujący dokument:
{ "_id" : 2, "a" : 1000, "b" : -2, "c" : -3 }
Przeprowadźmy teraz ponownie poprzednie przykłady i zobaczmy, co się stanie:
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $multiply: [ "$a", "$b" ] } }
}
]
)
Wynik:
{ "a" : 1000, "b" : 2, "result" : 2000 } { "a" : 1000, "b" : -2, "result" : -2000 }
A oto z trzema liczbami:
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
c: 1,
result: { $multiply: [ "$a", "$b", "$c" ] } }
}
]
)
Wynik:
{ "a" : 1000, "b" : 2, "c" : 3, "result" : 6000 } { "a" : 1000, "b" : -2, "c" : -3, "result" : 6000 }
Po pomnożeniu liczby ujemnej przez liczbę dodatnią iloczyn jest zawsze ujemny. Ale kiedy pomnożysz dwie liczby ujemne lub dwie liczby dodatnie, iloczyn jest zawsze dodatni.
Dodaj własny numer
Niekoniecznie jesteś ograniczony tylko do liczb w dokumencie/ach. Możesz użyć własnych liczb, jeśli chcesz pomnożyć wszystkie pola przez ustaloną liczbę.
Przykład:
db.data.aggregate(
[
{ $project: {
_id: 0,
result: { $multiply: [ "$a", "$b", "$c", 2.5 ] } }
}
]
)
Wynik:
{ "result" : 15000 } { "result" : 15000 }