मुझे मोंगो में मौजूदा दस्तावेजों में जटिल प्रकार जोड़ने की कोशिश करते समय परेशानी हो रही है।मोंगो में जटिल कक्षाओं को जोड़ना
मेरे पास निम्नलिखित दो वर्ग हैं।
public class UserObjectCollection {
[BsonId]
public Guid UserId { get; set; }
public Dictionary<string, object> UserObjects { get; set; }
public UserObjectCollection() {
UserObjects = new Dictionary<string, object>();
}
}
public class ComplexClass {
public string Bar { get; set; }
public int Foo { get; set; }
}
मैं फिर सम्मिलन के लिए एक नई वस्तु बना देता हूं।
var bd = new UserObjectCollection() {
UserId = Guid.NewGuid(),
UserObjects = {
{ "data", 12 },
{ "data2", 123 },
{ "data3", new ComplexClass() { Bar= "bar", Foo=1234 } }
}
};
दस्तावेज़ डालें।
mongoCollection.Insert(bd.ToBsonDocument());
और मुझे परिणामस्वरूप दस्तावेज़ मिलता है।
{ "_ id": BinData (3, "t089M1E1j0OFVS3YVuEDwg =="), "UserObjects": { "डेटा": 12, "data2": 123, "data3": { "_t": "ComplexClass" , "बार": "बार", "फू": 1234} }}
दस्तावेज़ सही ढंग से सम्मिलित करता है। फिर मैं मानों में से एक को संशोधित करता हूं।
var query = Query.EQ("UserObjects.data", BsonValue.Create(12));
collection.FindAndModify(
query,
SortBy.Null,
Update.SetWrapped<ComplexClass>("data2", new ComplexClass() { Foo = -1234, Bar = "FooBar" }),
returnNew: false,
upsert: true);
दस्तावेज़ में यह दस्तावेज़ में दिखाई देता है।
{"उपयोगकर्ता ऑब्जेक्ट्स": {"डेटा": 12, "डेटा 2": {"बार": "फूबार", "फू": -1234}, "डेटा 3": {"_t": "ComplexClass" , "बार": "बार", "फू": 1234}}, "_id": बिनडाटा (3, "W11Jy + hYqE2nVfrBdxn54g ==")}
यदि मैं इस रिकॉर्ड को पुनर्प्राप्त करने का प्रयास करता हूं, तो मुझे एक फ़ाइलफॉर्मेट अपवाद प्राप्त होता है ।
var theDocument = collection.Find(query).First();
(बिना क्रिया के अपवाद: System.IO.FileFormatException: असमर्थ वास्तविक टी निर्धारित करने के लिए वस्तु के ype deserialize करने के लिए NominalType System.Object है और BsonType Docum ईएनटी है।।)।
डेटा 3 के विपरीत, डेटा 2 में कोई भेदभाव नहीं होता है। मैं क्या कर रहा हूँ?