本文介绍了MongoDB C#驱动程序-忽略绑定字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在通过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#驱动程序-忽略绑定字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-03 19:12