MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

आप मोंगोडीबी सी # सीरिएलाइज़र के साथ मूल्य प्रकारों को कैसे क्रमबद्ध करते हैं?

आप इस कोड का उपयोग करके स्ट्रक्चर्स को संभालने के लिए एक कस्टम सीरिएलाइज़र बना सकते हैं:

public class StructBsonSerializer : IBsonSerializer 
{ 
    public void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) 
    { 
        var fields = nominalType.GetFields(BindingFlags.Instance | BindingFlags.Public); 
        var propsAll = nominalType.GetProperties(BindingFlags.Instance | BindingFlags.Public); 

        var props = new List<PropertyInfo>(); 
        foreach (var prop in propsAll) 
        { 
            if (prop.CanWrite) 
            { 
                props.Add(prop); 
            } 
        } 

        bsonWriter.WriteStartDocument(); 

        foreach (var field in fields) 
        { 
            bsonWriter.WriteName(field.Name); 
            BsonSerializer.Serialize(bsonWriter, field.FieldType, field.GetValue(value)); 
        } 
        foreach (var prop in props) 
        { 
            bsonWriter.WriteName(prop.Name); 
            BsonSerializer.Serialize(bsonWriter, prop.PropertyType, prop.GetValue(value, null)); 
        } 

        bsonWriter.WriteEndDocument(); 
    } 

    public object Deserialize(BsonReader bsonReader, Type nominalType, Type actualType, IBsonSerializationOptions options) 
    { 
        var obj = Activator.CreateInstance(actualType); 

        bsonReader.ReadStartDocument(); 

        while (bsonReader.ReadBsonType() != BsonType.EndOfDocument) 
        { 
            var name = bsonReader.ReadName(); 

            var field = actualType.GetField(name); 
            if (field != null) 
            { 
                var value = BsonSerializer.Deserialize(bsonReader, field.FieldType); 
                field.SetValue(obj, value); 
            } 

            var prop = actualType.GetProperty(name); 
            if (prop != null) 
            { 
                var value = BsonSerializer.Deserialize(bsonReader, prop.PropertyType); 
                prop.SetValue(obj, value, null); 
            } 
        } 

        bsonReader.ReadEndDocument(); 

        return obj; 
    } 

    public object Deserialize(BsonReader bsonReader, Type nominalType, IBsonSerializationOptions options) 
    { 
        return Deserialize(bsonReader, nominalType, nominalType, options); 
    } 

    public bool GetDocumentId(object document, out object id, out Type idNominalType, out IIdGenerator idGenerator) 
    { 
        throw new NotImplementedException(); 
    } 

    public void SetDocumentId(object document, object id) 
    { 
        throw new NotImplementedException(); 
    } 
} 

फिर, उस धारावाहिक को अपनी संरचना के लिए पंजीकृत करें:

BsonSerializer.RegisterSerializer(typeof(MyStruct), new StructBsonSerializer());


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoose findById तब काम करता है जब मैं एक स्ट्रिंग अक्षर का उपयोग करता हूं, लेकिन तब नहीं जब मैं किसी ऑब्जेक्ट की संपत्ति का संदर्भ देता हूं

  2. MongoDB :$unset . के संशोधक शब्दार्थ को अपडेट करें

  3. MongoDB नेस्टेड ऑब्जेक्ट फ़ील्ड डेप्थ लिमिट

  4. मैं Mongoid में एक एम्बेडेड दस्तावेज़ से फ़ील्ड कैसे निकालूं?

  5. NodeJS ऐप संरचना के बारे में स्पष्ट होना चाहते हैं (पूर्ण जावास्क्रिप्ट स्टैक)