代码之家  ›  专栏  ›  技术社区  ›  miXo

C MongoDB BigInteger序列化

  •  -1
  • miXo  · 技术社区  · 6 年前

    我有以下物品:

    public abstract class RichPerson{
        public string name;
        public BigInteger money;
    }
    

    我希望mongo中的money属性存储为字符串。但是当从mongo中选择文档时,我想用某种构造函数将money属性序列化为biginger类型。

    我该怎么叫蒙戈这么做?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Phael    6 年前

    告诉MongoDB,这是一个字符串,它会做剩下的

    public class RichPerson 
       {
          public string name {get; set;}
          [BsonRepresentation(MongoDB.Bson.BsonType.String)]
          public double money {get; set}
       }
    

    编辑了答案以显示我用于使其工作的双精度、长型或十进制数据类型的模型。MongoDB不知道bigInteger,抱歉,伙计。

    1. 模型

    enter image description here

    1. 保存为字符串

    enter image description here

    1. 返回模型中的类型(decimal、long或double)

    enter image description here

        2
  •  0
  •   miXo    6 年前

    对于想知道答案的人来说。必须为money字段指定custom[bsonserializer]。我希望这是正确的方法。

    public class RichPerson
    {
        public string name;
        [BsonSerializer(typeof(MySerializer))]
        public BigInteger money;
    }
    
    public class MySerializer : SerializerBase<BigInteger>
    {
        public override BigInteger Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
        {
            string val = context.Reader.ReadString();
            return BigInteger.Parse(val);
        }
    
        public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, BigInteger value)
        {
            context.Writer.WriteString(value.ToString());
        }
    }