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

spring-data-mongodbフレームワークでBigDecimalをDoubleに変換する方法

    独自のコンバーターを追加する方法は次のとおりです。

    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg ref="mongoDbFactory"/>
        <constructor-arg ref="mappingConverter"/>
        <property name="writeConcern">
            <util:constant static-field="com.mongodb.WriteConcern.FSYNC_SAFE"/>
        </property>
        <property name="writeResultChecking">
            <util:constant static-field="org.springframework.data.mongodb.core.WriteResultChecking.EXCEPTION"/>
        </property>
    </bean>
    
    <mongo:mapping-converter id="mappingConverter">
        <mongo:custom-converters base-package="com.vladmihalcea.**.mongo.converter"/>
    </mongo:mapping-converter>
    

    これで、コンバーターは次のようになります。

    @Component
    public class DoubleToBigDecimalConverter implements Converter<Double, BigDecimal> {
    
        @Override
        public BigDecimal convert(Double source) {
            return new BigDecimal(source);
        }
    }
    
    @Component
    public class BigDecimalToDoubleConverter implements Converter<BigDecimal, Double> {
    
        @Override
        public Double convert(BigDecimal source) {
            return source.doubleValue();
        }
    }
    

    コンバーターを追加する前に、次の情報を入手しました:

    update test.product query: { _id: 123 } update: { _id: 123, _class: "com.vladmihalcea.mongo.model.Product", name: "Tv", quantity: "10", discount: "12.34", version: 0 } nscanned:0 nupdated:1 upsert:1 keyUpdates:0 locks(micros) w:49328 50ms
    

    コンバーターを追加した後:

    update test.product query: { _id: 123 } update: { _id: 123, _class: "com.vladmihalcea.mongo.model.Product", name: "Tv", quantity: "10", discount: 12.34, version: 0 } nscanned:0 nupdated:1 upsert:1 keyUpdates:0 locks(micros) w:64689 65ms
    



    1. MapReduceの結果は100に制限されているようですか?

    2. MongoDB$lookup値を配列に戻す

    3. 流星生産サーバーでmongodbを復元する

    4. MongoDBとMySQLNoSQL-Mongoが優れている理由