Как увеличить число целых чисел в атомном режиме? Может ли метод FindAndModify помочь?MongoDB: приращение целочисленного поля (C#)
Например, документ содержит поле count
, и я хочу увеличить его, не получая полный документ и сохраняя его обратно.
Как увеличить число целых чисел в атомном режиме? Может ли метод FindAndModify помочь?MongoDB: приращение целочисленного поля (C#)
Например, документ содержит поле count
, и я хочу увеличить его, не получая полный документ и сохраняя его обратно.
Я оставил комментарий, но я нашел его. Модификатор $inc
будет увеличивать поле внутри. Полностью атомарно для этой цели.
Смотрите здесь "Monog DB Atomic Operations"
На основании ответа от Paystey здесь некоторый код, используя версию 2.1.0 драйвера C#, только в случае, если кто-то нуждается в этом:
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;
да, спасибо, но Я не нашел, как сделать это на C# – Edward83
ahh, где вам нужна специальная помощь с драйвером, вы должны использовать его, как и любой другой модификатор. См. Ссылку, которую я только что добавил, вы просто передаете поля в '$ inc', которые хотите увеличить. Это довольно стандартная функция и не должна быть слишком разной в вашем драйвере. Если вы разместите какой-то код по вашему вопросу, мы, вероятно, сможем это выяснить. – Paystey
Paystey, спасибо, я нашел пример использования обновления http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-Updatemethod – Edward83