Trong MongoDB, $multiply
toán tử đường ống tổng hợp nhân các số với nhau và trả về kết quả.
Để sử dụng $multiply
toán tử, chuyển các số cho toán tử trong một mảng.
Các đối số có thể là bất kỳ biểu thức hợp lệ nào, miễn là chúng phân giải thành số.
Ví dụ
Giả sử chúng ta có một tập hợp được gọi là data
với tài liệu sau:
{ "_id" : 1, "a" : 1000, "b" : 2, "c" : 3 }
Chúng ta có thể sử dụng $multiply
toán tử trong một đường ống tổng hợp để nhân hai hoặc nhiều số đó với nhau.
Nhân 2 số
Dưới đây là một ví dụ về nhân hai số với nhau.
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $multiply: [ "$a", "$b" ] } }
}
]
)
Kết quả:
{ "a" : 1000, "b" : 2, "result" : 2000 }
Nhân 3 số
Đây là một lần nữa, ngoại trừ lần này, chúng tôi nhân cả ba số với nhau.
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
c: 1,
result: { $multiply: [ "$a", "$b", "$c" ] } }
}
]
)
Kết quả:
{ "a" : 1000, "b" : 2, "c" : 3, "result" : 6000 }
Giá trị phủ định
Các con số có thể là số dương hoặc số âm.
Giả sử chúng ta thêm tài liệu sau vào bộ sưu tập của mình:
{ "_id" : 2, "a" : 1000, "b" : -2, "c" : -3 }
Bây giờ, hãy chạy lại các ví dụ trước và xem điều gì sẽ xảy ra:
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $multiply: [ "$a", "$b" ] } }
}
]
)
Kết quả:
{ "a" : 1000, "b" : 2, "result" : 2000 } { "a" : 1000, "b" : -2, "result" : -2000 }
Và đây là với ba con số:
db.data.aggregate(
[
{ $project: {
_id: 0,
a: 1,
b: 1,
c: 1,
result: { $multiply: [ "$a", "$b", "$c" ] } }
}
]
)
Kết quả:
{ "a" : 1000, "b" : 2, "c" : 3, "result" : 6000 } { "a" : 1000, "b" : -2, "c" : -3, "result" : 6000 }
Khi bạn nhân một số âm với một số dương thì tích luôn âm. Nhưng khi bạn nhân hai số âm hoặc hai số dương, tích luôn là số dương.
Thêm số riêng của bạn
Bạn không nhất thiết chỉ bị giới hạn ở các số trong / s tài liệu. Bạn có thể sử dụng các số của riêng mình nếu bạn cần nhân tất cả các trường với một số tiền cố định.
Ví dụ:
db.data.aggregate(
[
{ $project: {
_id: 0,
result: { $multiply: [ "$a", "$b", "$c", 2.5 ] } }
}
]
)
Kết quả:
{ "result" : 15000 } { "result" : 15000 }