如何在MongoDB查询中返回Account.Credentials.Username并排除密码
解决方案
方法一:查询时用投影控制字段返回
通过MongoDB的投影功能,在查询时明确排除Account.Credentials.Password字段,只保留需要的Username,同时保留Player的其他所有字段。
修改后的服务代码:
public List<Player> GetUsers() { // 构建投影规则:排除Password字段 var projection = Builders<Player>.Projection .Exclude(p => p.Account.Credentials.Password); // 执行查询并应用投影 return _players.FindSync(FilterDefinition<Player>.Empty) .Project<Player>(projection) .ToList(); }
方法二:修改实体类全局忽略Password
如果所有涉及Credentials的查询都不需要返回Password,可以直接在实体类的Password属性上添加特性,让MongoDB序列化时自动忽略该字段:
修改后的Credentials实体类:
public class Credentials { public string Username { get; set; } = ""; [BsonIgnore] public string Password { get; set; } = ""; }
这种方式下原查询方法无需修改,返回的Player对象会自动剔除Password字段。
内容的提问来源于stack exchange,提问作者fivetwentysix
相关产品推荐
相关产品推荐

