MongoDB có $inc
toán tử cập nhật trường cho phép bạn tăng giá trị bằng một số lượng cụ thể.
Bạn có thể sử dụng các giá trị âm và dương (tức là để tăng hoặc giảm giá trị).
Nếu trường chưa tồn tại, trường đó sẽ được tạo với giá trị được chỉ định.
Ví dụ
Giả sử chúng ta có một bộ sưu tập có tên là dogs
với tài liệu sau:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Đây, weight
trường chứa một giá trị có thể tăng hoặc giảm.
Sự gia tăng
Chúng ta có thể sử dụng $inc
toán tử kết hợp với update()
phương pháp để tăng trọng lượng của chú chó này.
Như thế này:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 5 } }
)
Đầ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.dogs.find()
Kết quả:
{ "_id" : 1, "name" : "Wag", "weight" : 15 }
Chúng ta có thể thấy rằng trọng lượng của con chó đã tăng thêm 5 lần.
Giảm dần
Bạn có thể giảm giá trị bằng cách cung cấp giá trị âm cho $inc
nhà điều hành.
Như thế này:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: -5 } }
)
Đầu ra:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Kiểm tra bộ sưu tập:
db.dogs.find()
Kết quả:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Chúng ta có thể thấy rằng trọng lượng hiện đã giảm đi 5.
Gia tăng một trường không tồn tại
Khi bạn tăng một trường không tồn tại trong tài liệu, trường đó sẽ được thêm vào và gán giá trị đã chỉ định.
Ví dụ:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 1, height: 30 } }
)
Đầu ra:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Lưu ý rằng chúng tôi đã cập nhật hai trường; weight
trường và height
trường (ban đầu không tồn tại).
Hãy kiểm tra lại tài liệu:
db.dogs.find()
Kết quả:
{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }
Chúng ta có thể thấy rằng weight
trường đã được tăng thêm 1
và height
mới trường đã được thêm với giá trị được chỉ định là 30
.