MongoDB: увеличить целочисленное поле (C#)
Как увеличить целочисленное поле атомарным способом? Может ли метод FindAndModify помочь?
Например, документ содержит поле count
и я хочу увеличить его без получения полного документа и сохранения обратно.
2 ответа
Решение
Я оставил комментарий, но нашел его. $inc
Модификатор будет увеличивать поле внутри. Совершенно атомно для этой конкретной цели.
Смотрите здесь "Monog DB Atomic Operations"
Основываясь на ответе Paystey, вот код, использующий драйвер C# версии 2.1.0, на тот случай, если это понадобится кому-то другому:
var filter = Builders<BsonDocument>.Filter.Eq("_id", id);
var update = new BsonDocument("$inc", new BsonDocument { { "votes", 1 } });
var coll = db.GetCollection<BsonDocument>("collection");
var doc = coll.FindOneAndUpdateAsync(filter, update).Result;