我创建了一个POCO,我正在尝试从mongodb序列化它显然我创建了我的类相同的Mongo元素
我只使用这段代码
MongoClient client = new MongoClient("mongodb://ip:port");
IMongoDatabase database = client.GetDatabase("envbas");
BsonClassMap.RegisterClassMap<Life>(cm =>
{
cm.AutoMap();
cm.SetIgnoreExtraElements(true);
});
var filter = Builders<Life>.Filter.Eq(life => life.Fl_status, "A");
var lives = database.GetCollection<Life>("lives").Find(filter).ToList();
使用此代码,它在生命变量(List)上向我返回0行
当我尝试使用BsonDocument类型查找所有元素时,它只返回一些东西
var lives = database.GetCollection<BsonDocument>("lives").Find(new BsonDocument()).ToList();
但我需要将它转换为Life对象,所以我不能使用BsonDocument类
通过使用cm.SetIgnoreExtraElements(true);
您需要定义此Fl_status:
[BsonIgnoreExtraElements]
public class Life
{
[BsonElement("fl_status")]
public string Fl_status { get; set; }
}
或者你可以删除BsonClassMap.RegisterClassMap<Life>
,并使用这个过滤器:
var filter = Builders<BsonDocument>.Filter.Eq("Fl_status", "A");
我只需要在我的属性类中添加一些符号
我的POCO
[BsonIgnoreExtraElements]
public class Life
{
[BsonId]
[BsonElement("")]
public ObjectId Id { get; set; }
//public ObjectId __v { get; set; }
[BsonElement("ds_atividade")]
public string Ds_atividade { get; set; }
[BsonElement("cd_cbo")]
public string Cd_cbo { get; set; }
[BsonElement("nm_funcao")]
public string Nm_funcao { get; set; }
[BsonElement("cd_interno_funcao")]
public string Cd_interno_funcao { get; set; }
[...]
}
我的最终代码
MongoClient client = new MongoClient("mongodb://ip:port");
IMongoDatabase database = client.GetDatabase("envbas");
var filter = Builders<Life>.Filter.Eq("fl_status", "Ativo"); //Eq("Mongo propertie", "value")
var lives = database.GetCollection<Life>("lives").Find(filter).ToListAsync().GetAwaiter().GetResult();
现在我可以在我的生活变量中获得一个列表。我想如果你想使用符号的Fluent API,你可以使用mapping
BsonClassMap.RegisterClassMap<MyClass>(cm =>
{
cm.MapMember(c => c.SomeProperty);
cm.MapMember(c => c.AnotherProperty);
});