MongoDB có $mul
toán tử cập nhật trường cho phép bạn nhân một giá trị với một số tiền cụ thể.
Nếu trường chưa tồn tại, trường sẽ được tạo và giá trị của nó được đặt thành 0 (0
) sử dụng cùng một kiểu số với hệ số nhân.
Ví dụ
Giả sử chúng ta có một bộ sưu tập với tài liệu sau:
{ "_id" : 1, "bar" : 10 }
Chúng ta có thể sử dụng $mul
toán tử kết hợp với update()
phương pháp để tăng thanh bar
trường.
Như thế này:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 2 } }
)
Đầu ra:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Điều này cho chúng tôi biết rằng một tài liệu đã được khớp và sửa đổi.
Hãy kiểm tra lại bộ sưu tập:
db.foo.find()
Kết quả:
{ "_id" : 1, "bar" : 20 }
Chúng tôi có thể thấy rằng số tiền đã tăng gấp đôi lên 20.
Nhân một trường không tồn tại
Khi bạn sử dụng $mul
trên một trường không tồn tại trong tài liệu, trường được thêm và đặt thành 0 (0
) sử dụng cùng một kiểu số với hệ số nhân.
Ví dụ:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 3, extra: 2 } }
)
Đầu ra:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Lưu ý rằng chúng tôi đã cập nhật hai trường; thanh bar
và trường extra
trường (ban đầu không tồn tại).
Hãy kiểm tra lại tài liệu:
db.foo.find()
Kết quả:
{ "_id" : 1, "bar" : 60, "extra" : 0 }
Chúng ta có thể thấy rằng thanh bar
trường đã được nhân với 3
và một extra
mới trường đã được thêm và đặt thành 0
.
Loại hỗn hợp
Phép nhân với các giá trị của kiểu số hỗn hợp (số nguyên 32 bit, số nguyên 64 bit, float) có thể dẫn đến chuyển đổi kiểu số.
Xem tài liệu MongoDB để được giải thích.