C# 如何在dotnet core中获取BSoneElement值以获取mongodb字段名的字符串

C# 如何在dotnet core中获取BSoneElement值以获取mongodb字段名的字符串,c#,mongodb,.net-core,nosql,drive,C#,Mongodb,.net Core,Nosql,Drive,大家好,我在mongo还是新来的,但我希望能得到你们丰富经验的帮助, 在我的项目中,我使用BSOneElement命名所有字段,例如: [BsonElement("isremoved")] public bool IsRemoved { get; set; } 我在方法中有如下查询: public async Task<Player> Delete(string PlayerId) { var

大家好,我在mongo还是新来的,但我希望能得到你们丰富经验的帮助, 在我的项目中,我使用BSOneElement命名所有字段,例如:

        [BsonElement("isremoved")]
        public bool IsRemoved { get; set; }
我在方法中有如下查询:

        public async Task<Player> Delete(string PlayerId)
        {
            var filter = Builders<Player>.Filter.And(Builders<Player>.Filter.Eq(x => x.PlayerId, PlayerId));
            var item = Builders<Player>.Update.Combine(Builders<Player>.Update.Set("isremoved", true));
            return await _dbCollection.FindOneAndUpdateAsync(filter, item);
        }
公共异步任务删除(字符串PlayerId)
{
var filter=Builders.filter.And(Builders.filter.Eq(x=>x.PlayerId,PlayerId));
var item=Builders.Update.Combine(Builders.Update.Set(“isremoved”,true));
return wait_dbCollection.FindOneAndUpdateAsync(过滤器,项);
}

我认为这不是构建此查询的最佳方式,我们实际上打算将生产中的字段名称更改为短名称“isr”,以替换“isremoved”,在这种情况下,如何从类属性本身(isremoved)获取bsonement元素值您可以传入一个表达式,就像您对Equals过滤器所做的那样:

var update=Builders.update.Set(player=>player.IsRemoved,true);
返回wait_dbCollection.FindOneAndUpdateAsync(过滤器,更新);

您可以检索如下自定义属性值:

typeof(Player).GetProperty(nameof(Player.IsRemoved)).GetCustomAttribute<BsonElementAttribute>().ElementName
typeof(Player).GetProperty(nameof(Player.IsRemoved)).GetCustomAttribute().ElementName
不要忘记使用MongoDB.Bson.Serialization.Attributes导入
使用系统反射

您是否尝试过
.Set(x=>x.IsRemoved,true)