ऐसा करने के लिए मुझे लगता है कि आपके पास 2 विकल्प होंगे।
सबसे पहले मैन्युअल रूप से एक क्लास मैप लिखना होगा
BsonClassMap.RegisterClassMap<MyClass>(cm => {
cm.AutoMap();
cm.GetMemberMap(c => c.Foo).SetElementName("foo");
});
दूसरा यह होगा कि आप अपनी कक्षा को निम्नलिखित विशेषताओं से सजाएं
public class MyObj
{
[BsonElement("id")]
public int Id { get; set; }
[BsonElement("foo")]
public string Foo { get; set; }
}
CSharp ड्राइवर टीम के पास निम्न लिंक पर क्रमांकन पर एक अच्छा ट्यूटोरियल है
http://docs.mongodb.org/ पारिस्थितिकी तंत्र/ट्यूटोरियल/क्रमबद्ध-दस्तावेज-के साथ-सीशार्प-चालक/
अपडेट करें
मैंने अभी निम्नलिखित की कोशिश की है और यह मेरे लिए काम करता है, जाहिर है मुझे यकीन है कि यह आपके कोड का एक और अधिक सरलीकृत संस्करण है लेकिन यह अनुमान लगा रहा है कि यह कैसा दिख सकता है।
मैंने दो वर्ग मानचित्रों को अलग-अलग पंजीकृत किया है और बेस क्लास में BsonKnownType जोड़ा है।
[BsonKnownTypes(typeof(GeoJSONObject))]
public class Point
{
public string Coordinates { get; set; }
}
public class GeoJSONObject : Point
{
public string Type { get; set; }
}
static void Main(string[] args)
{
var cn = new MongoConnectionStringBuilder("server=localhost;database=MyTestDB;");
var settings = MongoClientSettings.FromConnectionStringBuilder(cn);
var client = new MongoClient(settings);
BsonClassMap.RegisterClassMap<Point>(cm =>
{
cm.AutoMap();
cm.GetMemberMap(c => c.Coordinates).SetElementName("coordinates");
});
BsonClassMap.RegisterClassMap<GeoJSONObject>(cm =>
{
cm.AutoMap();
cm.GetMemberMap(c => c.Type).SetElementName("type");
});
var result = client.GetServer()
.GetDatabase("MyTestDB")
.GetCollection("MyCol")
.Find(Query.EQ("type", BsonValue.Create("xxxx")));
}