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;
Другие вопросы по тегам