MongoDB .NET ड्राइवर ऐसे मामलों में कुछ संभावनाएं प्रदान करता है:
बहुरूपता
आप कक्षाओं का एक पदानुक्रम बना सकते हैं और MongoDB ड्राइवर डेटाबेस से प्राप्त होने वाली वस्तु के प्रकार को निर्धारित करने में सक्षम होगा:
[BsonKnownTypes(typeof(Post), typeof(NewTypePost))]
public abstract class PostBase
{
[BsonId]
public string Id { get; set; }
}
public class Post: PostBase
{
public string Message { get; set; }
}
public class NewTypePost: PostBase
{
public string Image { get; set; }
}
MongoDB ड्राइवर अतिरिक्त फ़ील्ड बनाएगा _t
प्रत्येक दस्तावेज़ में जो संबंधित वर्ग का प्रतिनिधित्व करेगा।
एकल वर्ग
आपके पास अभी भी Post
हो सकता है वर्ग और उपयोग करें BsonIgnoreIfNull
क्रमबद्धता अपवाद से बचने के लिए विशेषता। MongoDB .NET ड्राइवर उन गुणों को null
. पर सेट करेगा अगर वे आपके डेटाबेस में मौजूद नहीं हैं।
public class Post
{
[BsonId]
public string Id { get; set; }
[BsonIgnoreIfNull]
public string Message { get; set; }
[BsonIgnoreIfNull]
public string Image { get; set; }
}
BsonDocument
आप दृढ़ता से टाइप किए गए दृष्टिकोण को भी छोड़ सकते हैं और BsonDocument
. का उपयोग कर सकते हैं कक्षा जो गतिशील शब्दकोश जैसी संरचना है जो आपके मोंगो दस्तावेज़ों का प्रतिनिधित्व करती है
var collection = db.GetCollection<BsonDocument>("posts");
अधिक विवरण यहां
गतिशील
dynamic
निर्दिष्ट करना ICollection
. के सामान्य पैरामीटर के रूप में आपको ExpandoObject
जो आपके डेटाबेस में मौजूद सभी मानों को धारण करेगा।
var collection = db.GetCollection<dynamic>("posts");
var data = collection.Find(Builders<dynamic>.Filter.Empty).ToList();
var firstMessage = data[0].Message; // dynamically typed code