1) अगर आपके पास Id, id or _id
. नाम का कॉलम है , आपके द्वारा दृढ़ता से टाइप किए गए TDocument
. में वर्ग (एक संग्रह में आइटम प्रकार), फिर "_id"
. नामक एक कॉलम मोंगो में उत्पन्न होगा। यह उस कॉलम के लिए एक इंडेक्स भी बनाएगा। आपको एक duplicate key error
मिलती है अपवाद यदि पहले से मौजूद किसी कुंजी के साथ कोई आइटम सम्मिलित करने का प्रयास कर रहा है।
public ObjectId Id { get; set; }
ObjectId
. के लिए टाइप जनरेटर का उपयोग करेगा और यह _id: ObjectId("57ade20771e59f422cc652d9")
जैसा दिखेगा ।
public Guid _id { get; set; }
"_id" : BinData(3,"s2Td7qdghkywlfMSWMPzaA==")
जैसी smth उत्पन्न करने के लिए Guid जनरेटर का उपयोग करेगा ।
public int Id { get; set; }
, public string id { get; set; }
, public byte[] _id { get; set; }
यदि निर्दिष्ट नहीं है तो प्रत्येक प्रकार के लिए डिफ़ॉल्ट का उपयोग करते हुए इंडेक्स कॉलम भी होंगे।
2) [BsonId]
आपको उस इंडेक्स को किसी भी तरह से नाम देने की सुविधा देता है। [BsonId] public Guid SmthElseOtherThanId { get; set; }
और [BsonId] public string StringId { get; set; }
सूचकांक होंगे; public Guid SmthElseOtherThanId { get; set; }
और public string StringId { get; set; }
नहीं होगा। mongodb अभी भी _id
का उपयोग करेगा आंतरिक रूप से।
वही तर्क, public ObjectId SmthElseOtherThanId {get; set;}
बिना [BsonId]
. के डेकोरेशन एक इंडेक्स कॉलम नहीं होगा।
3) [BsonRepresentation]
आपको Mongo प्रकार बनाम आंतरिक .Net प्रकार के साथ तालमेल बिठाने देता है, यदि उनके बीच कोई रूपांतरण है .
[BsonId] [BsonRepresentation(BsonType.ObjectId)] public ObjectId Id { get; set; }
public ObjectId Id { get; set; }
.
[BsonId] [BsonRepresentation(BsonType.ObjectId)] public string Id { get; set; }
हालांकि अलग है। मोंगो स्वतः ही ऑब्जेक्ट आईडी उत्पन्न करेगा, हालांकि आप .net, फ़िल्टर क्वेरी आदि में स्ट्रिंग्स का उपयोग करने में सक्षम होंगे, क्योंकि ऑब्जेक्ट आईडी और स्ट्रिंग के बीच एक रूपांतरण होता है।
[BsonId] [BsonRepresentation(BsonType.ObjectId)] public byte[] Id { get; set; }
या [BsonId] [BsonRepresentation(BsonType.ObjectId)] public int Id { get; set; }
एक ObjectId not a valid representation for a ByteArraySerializer / Int32Serializer
के लिए मान्य प्रतिनिधित्व नहीं है। संदेश।
लेकिन [BsonId] [BsonRepresentation(BsonType.String)] public int StringId { get; set; }
ठीक रहेगा।