繁体   English   中英

可排序的十进制值(无双精度/浮点型)。 选择哪种方式?

[英]Sortable decimal value (no double/float). Which way to choose?

我一直在寻找如何使用MongoDB保存小数,偶然发现了一些想法。

  1. 将其另存为字符串(因为我使用的是Java Spring Framework,这是默认实现)

    value: "3.44"

  2. 使用具有未缩放值+缩放比例的嵌套文档将其保存为ebay方式: http : //www.technology-ebay.de/the-teams/mobile-de/blog/mapping-bigdecimals-with-morphia-for-mongodb。 HTML

    value: { unscaled: NumberLong(344) , scale: 2 }

  3. 分别保存小数点前后的数字

    value: { major: 3 , minor: 44 }

基本上我会说:

  1. 是没有用的,因为我无法将其排序为数字(即"9" > "12"

  2. 如果ebay使用此功能,那就不会那么糟。 但是我不知道如何对这些值进行排序?!

  3. 排序非常简单: db.collection.find().sort({"value.major":1, "value.minor":1})

问题:

您如何实施?

如何使用方法2.排序?

谢谢!

解决方法:

  1. major存储为整数,将minor存储为字符串:

    value: { major: 3 , minor: "44" }

  2. 定义最大 小数点的精度,然后可以用零填充次要值。 例如,精度= 10:

    value: { major: 3 , minor: 4400000000 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM