Как мне обновить документ в MongoDB и изменить все свойства, кроме_id в C # - PullRequest
0 голосов
/ 10 мая 2018
public class UserObject
{
    public ObjectId _id { get; set; }// Self generated
    public ulong UserID { get; set; } // Self generated
    public string Username { get; set; }
    public string CharClass{ get; set; }
    public int CharLevel { get; set; }
    public int CharColour { get; set; }
}

Я хочу обновить только имя пользователя, CharClass, CharLevel & CharColour.

В настоящее время у меня есть это:

var client = new MongoClient(DBString);
var database = client.GetDatabase("UserLists");
var collection = database.GetCollection<UserObject>(Convert.ToString(GuildId));

var filter = Builders<UserObject>.Filter.Eq(s => s.Username, newUserName);

var UpdatedUserObject = new UserObject
{
    UserID = UserId,
    Username = newUserName,
    CharClass = newCharClass,
    CharLevel = newCharLevel,
    CharColour = newCharColour 
};

collection.ReplaceOneAsync(filter, UpdatedUserObject);

Если у вас есть какие-либо предложения, которые будут высоко оценены, у меня работает надстройка, я просто не могу получить обновление, спасибо!

1 Ответ

0 голосов
/ 10 мая 2018

Я закончил тем, что сделал:

var client = new MongoClient(DBString);
var database = client.GetDatabase("UserLists");
var collection = database.GetCollection<UserObject>(Convert.ToString(GuildId));

var filter = Builders<UserObject>.Filter.Eq(s => s.Username, newUserName);

var UpdatedUserObject = new UserObject
{
    UserID = UserId,
    Username = newUserName,
    CharClass = newCharClass,
    CharLevel = newCharLevel,
    CharColour = newCharColour 
};

collection.ReplaceOne(filter, UpdatedUserObject);

Из-за этого возникла проблема с попыткой обновить _id, поэтому я использовал переполнение стека, чтобы поместить в него [BsonIgnoreIfDefault], чтобы он не пытался обновить:

Невозможно использовать BsonIgnoreIfDefault для свойства типа long

public class UserObject
{
    [BsonIgnoreIfDefault]
    public ObjectId _id { get; set; }// Self generated
    public ulong UserID { get; set; } // Self generated
    public string Username { get; set; }
    public string CharClass{ get; set; }
    public int CharLevel { get; set; }
    public int CharColour { get; set; }
}

После того, как это было исправлено, я обнаружил, что проблема заключалась в том, что я проходил через неправильное имя пользователя, поэтому оно никогда не соответствовало и поэтому не нашло ничего для обновления, просто я действительно глуп, спасибо за помощь

...