Думали, что это будет довольно прямолинейно, но мое значение остается таким же (0).Как вы увеличиваете поле в mongodb с помощью C#
Что я хотел бы сделать, это увеличить мое поле Непрочитанные сообщения, когда пользователь получает сообщение, которое они не прочитали, а затем уменьшает его, когда оно есть. Так я думал, что такой код будет работать:
var userHelper = new MongoHelper<User>();
//increment
userHelper.Collection.Update(Query.EQ("Id", userId.ToId()), Update.Inc("UnreadMessages", 1));
//decrement
userHelper.Collection.Update(Query.EQ("Id", userId.ToId()), Update.Inc("UnreadMessages", -1));
После выполнения этих не без ошибок выбрасываются, но значение не изменяется. И нет, я не буду не работает один за другим, как приведенный выше код может быть истолковано :)
Update
Вот мой вспомогательный класс:
public class MongoHelper<T> : Sandbox.Services.IMongoHelper<T> where T : class
{
public MongoCollection<T> Collection { get; private set; }
public MongoHelper()
{
var con = new MongoConnectionStringBuilder(ConfigurationManager.ConnectionStrings["MongoDB"].ConnectionString);
var server = MongoServer.Create(con);
var db = server.GetDatabase(con.DatabaseName);
Collection = db.GetCollection<T>(typeof(T).Name.ToLower());
}
}
и благодаря I ответ Трэвиса был способен снять это:
MongoHelper<UserDocument> userHelper = new MongoHelper<UserDocument>();
var user = userHelper.Collection.FindAndModify(Query.EQ("Username", "a"), SortBy.Null, Update.Inc("MessageCount", 1), true).GetModifiedDocumentAs<UserDocument>();
Попробуйте в оболочке. –
Любые причины для downvotes? Что я сделал неправильно? – rball
@SergioTulentsev Я постараюсь, но я боюсь, что я действительно новичок в монго, поэтому я учусь, когда я собираюсь. – rball