问题描述
在通过MongoDB和C#使用FindOne()时,是否可以忽略对象中未找到的字段?
When using a FindOne() using MongoDB and C#, is there a way to ignore fields not found in the object?
EG,示例模型.
public class UserModel
{
public ObjectId id { get; set; }
public string Email { get; set; }
}
现在,我们还将密码存储在MongoDB集合中,但不想将其绑定到上面的out对象.当我们像这样进行获取"时,
Now we also store a password in the MongoDB collection, but do not want to bind it to out object above. When we do a Get like so,
var query = Query<UserModel>.EQ(e => e.Email, model.Email);
var entity = usersCollection.FindOne(query);
我们收到以下错误
Element 'Password' does not match any field or property of class
总有办法告诉Mongo忽略模型无法匹配的字段吗?
Is there anyway to tell Mongo to ignore fields it cant match with the models?
推荐答案
是.只需使用BsonIgnoreExtraElements
属性装饰您的UserModel
类:
Yes. Just decorate your UserModel
class with the BsonIgnoreExtraElements
attribute:
[BsonIgnoreExtraElements]
public class UserModel
{
public ObjectId id { get; set; }
public string Email { get; set; }
}
顾名思义,驱动程序将忽略任何其他字段,而不会引发异常.此处的更多信息-忽略其他元素.
As the name suggests, the driver would ignore any extra fields instead of throwing an exception. More information here - Ignoring Extra Elements.
这篇关于MongoDB C#驱动程序-忽略绑定字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!