我创建了一个POCO,我尝试从mogodb序列化它 显然我创建了与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类
答案 0 :(得分:2)
使用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");
答案 1 :(得分:0)
我只需要在我的属性类
中添加一些符号我的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);
});