MongoDB има $inc
Оператор за актуализиране на полето, който ви позволява да увеличите стойност с определена сума.
Можете да използвате положителни и отрицателни стойности (т.е. за увеличаване или намаляване на стойността).
Ако полето вече не съществува, то се създава с посочената стойност.
Пример
Да предположим, че имаме колекция, наречена dogs
със следния документ:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Тук weight
полето съдържа стойност, която може да бъде увеличена или намалена.
Увеличение
Можем да използваме $inc
оператор във връзка с update()
метод за увеличаване на теглото на това куче.
Като това:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 5 } }
)
Изход:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Това ни казва, че един документ е бил съпоставен и променен.
Нека проверим колекцията отново:
db.dogs.find()
Резултат:
{ "_id" : 1, "name" : "Wag", "weight" : 15 }
Виждаме, че теглото на кучето се е увеличило с 5.
Намаляване
Можете да намалите стойността, като предоставите отрицателна стойност на $inc
оператор.
Като това:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: -5 } }
)
Изход:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Проверете колекцията:
db.dogs.find()
Резултат:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Виждаме, че теглото вече е намалено с 5.
Увеличете поле, което не съществува
Когато увеличите поле, което не съществува в документа, полето се добавя и му се присвоява посочената стойност.
Пример:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 1, height: 30 } }
)
Изход:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Забележете, че актуализирахме две полета; weight
полето и height
поле (което първоначално не е съществувало).
Нека проверим документа отново:
db.dogs.find()
Резултат:
{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }
Можем да видим, че weight
полето е увеличено с 1
и нова height
полето е добавено с посочената стойност 30
.