MongoDB读取Bigdecimal值

时间:2019-04-08 11:55:49

标签: mongodb bigdecimal

我将Java 8与MongoDb 4.0.8结合使用以下列方式保存文档:

    String jsonStrParam = "";
    ObjectMapper obj = new ObjectMapper();
    Document document = new Document();

    BigDecimal first =  new BigDecimal("1115.37");
    BigDecimal second =  new BigDecimal("1000.00");

    try
    {
        jsonStrParam = obj.writeValueAsString(myParameter);
    }
    catch (JsonProcessingException e)
    {
        LOG.info(e.toString(), e);
    }

    document.put("first", first);
    document.put("second", second);
    document.put("timestamp", new Date()); // 
    etc.

    try
    {
        collection.insertOne(document);
    }
    etc.

文件已保存。

要加载文档,我使用以下代码段:

String findKey = "_id";
ObjectId myObjId = new ObjectId(id);
Document myDoc = collection.find(eq(findKey, myObjId)).first();

String myDocToJson = myDoc.toJson();
System.out.println(myDocToJson);

Gson gson = new GsonBuilder().setPrettyPrinting().create();
ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
Map<String, Object> map = mapper.readValue(myDocToJson, Map.class); 

结果如下:

{"_id": {"$oid": "5caafc2e3ca1b36dd2cfc5f0"}, 
"first": {"$numberDecimal": "1115.37"}, 
"second": {"$numberDecimal": "1000.00"}, etc.

我的问题是我无法解析BigDecimal值(即JSON中的$numericDecimal)的准确性。 我已经尝试过投放,并且进行了不同的转换,但都无济于事。

我已经将它们转换为字符串,使用正则表达式提取了数值并从 生成了BigDecimal这是一个黑客解决方案。

我的问题是,读取/转换“值”“第一”这样的规范方法是哪一种:{"$numberDecimal": "1115.37"} 作为BigDecimal

0 个答案:

没有答案