sql >> データベース >  >> NoSQL >> MongoDB

c#mongodbドライバーmongo double値をc#10進数にキャストする方法

    おそらくこれが最善の選択肢です:

    monto = document["monto"].ToDecimal();
    

    これが非常にうまく機能する理由は、抽象的なBsonValue typeは、次のようなメソッドを実装します:

    public virtual decimal ToDecimal()
    

    BsonValueの具体的な実装 (例:BsonInt32BsonInt64BsonDouble など)このメンバーを以下のメソッドでオーバーライドします。これにより、ドライバーが保存されたドキュメントからint、long、またはdoubleを逆シリアル化するかどうかに関係なく、必要なものが正確に得られます。

    public override decimal ToDecimal()
    {
        return (decimal)_value;
    }
    

    または、特定の場合(および、スコープ内のすべてのドキュメントの「monto」フィールドにintが格納されている場合)、次のように記述できます。

    monto = Convert.ToDecimal(document["monto"].AsInt32)
    

    または単に

    monto = (decimal)(document["monto"].AsInt32)
    

    意味的に同一です。



    1. Django-Mongodbリストフィールドを持つNonrel

    2. 2.0ドライバーで同等のMongoServer.State

    3. IDで1億以上のドキュメントを削除する最速の方法

    4. socket.ioはどのように複数のサーバー間でメッセージを送信しますか?