public static Karma UpdateKarma(this IMongoDatabase db, string nick, string channel, string server, int incr) { var karma = db.GetCollection <BsonDocument>("Karma"); var builder = Builders <BsonDocument> .Filter; var filter = builder.Eq("nick", nick) & builder.Eq("channel", channel.ToLower()) & builder.Eq("network", server); var document = karma.Find(filter).FirstOrDefault(); if (document == null) { karma.InsertOne(new BsonDocument { { "nick", nick }, { "channel", channel.ToLower() }, { "network", server }, { "score", 0 } }); document = karma.Find(filter).FirstOrDefault(); } var update = Builders <BsonDocument> .Update.Inc("score", incr); karma.UpdateOne(filter, update); var toReturn = Karma.FromJson(document.ToJson(new JsonWriterSettings { OutputMode = JsonOutputMode.Strict })); toReturn.Score += incr; return(toReturn); }