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

MongoDb कस्टम संग्रह धारावाहिक

बहुत धन्यवाद एंटोन पुटाउ सबसे आसान संभव समाधान के लिए।

लेकिन एक और है। वस्तुओं को मैन्युअल रूप से क्रमबद्ध करने के लिए:

public class MyListAnimalSerializer : SerializerBase<List<Animals>>
{
    public override void Serialize(MongoDB.Bson.Serialization.BsonSerializationContext context, MongoDB.Bson.Serialization.BsonSerializationArgs args, List<Animal> value)
    {
        context.Writer.WriteStartArray();
        foreach (Animal mvnt in value)
        {
            context.Writer.WriteStartDocument();
            switch (mvnt.GetType().Name)
            {
                case "Tiger":
                    //your serialization here
                    break;
                case "Zebra":
                    //your serialization here
                    break;
                default:
                    break;
            }
            context.Writer.WriteEndDocument();
        }
        context.Writer.WriteEndArray();
    }

    public override List<Animals> Deserialize(MongoDB.Bson.Serialization.BsonDeserializationContext context, MongoDB.Bson.Serialization.BsonDeserializationArgs args)
    {
        context.Reader.ReadStartArray();

        List<Animals> result = new List<Animals>();

        while (true)
        {
            try
            {
                //this catch block only need to identify the end of the Array
                context.Reader.ReadStartDocument();
            }
            catch (Exception exp)
            {
                context.Reader.ReadEndArray();
                break;
            }

            var type = context.Reader.ReadString();
            var _id = context.Reader.ReadObjectId();
            var name = context.Reader.ReadString();
            if (type == "Tiger")
            {
                double tiger_height = context.Reader.ReadDouble();
                result.Add(new Tiger()
                {
                    Id = id,
                    Name = animal_name,
                    Height = tiger_height
                });
            }
            else
            {
                long zebra_stripes = context.Reader.ReadInt64();
                result.Add(return new Zebra()
                {
                    Id = id,
                    Name = animal_name,
                    StripesAmount = zebra_stripes
                });
            }
            context.Reader.ReadEndDocument();
        }
        return result;
    }
}

और बस आपको अपने सीरिएलाइज़र का उपयोग करने के लिए IEnumerable फ़ील्ड को एनोटेट करना होगा:

[BsonSerializer(typeof(MyListAnimalSerializer))]
public List<Animal> Animals { get; set; }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. पाइमोंगो के रेप्लिकासेट कनेक्शन का उपयोग करना:कभी-कभी इंडेक्स त्रुटि प्राप्त करना:कर्सर के लिए ऐसी कोई वस्तु नहीं है

  2. MongoDB में एक सबस्ट्रिंग को बदलने के 2 तरीके

  3. oplog.rs में ts फ़ील्ड पर अनुक्रमणिका अद्यतन नहीं है

  4. आंतरिक बाल संग्रह पर MongoDB कुल समूह और गिनती के साथ पूरा दस्तावेज़ प्राप्त करें

  5. मोंगोडब और एक्सप्रेस