0

我正在使用 MongoDB 来存储基于单位的不同值。例如我有一个速度场: "Speed":"1 m/s" 或者 "Speed":"1 mph" 我也有距离场,像这样: "Distance": "1 ft" 或者 "Distance":"1 meter" 我有大约 20 种不同的场类型,比如速度、距离、功率、面积、角度等我想存储所有不同的场单位类型相同,所以我可以比较它们。我不确定是否最好在输入或从数据库中读取时执行此操作,但两者都是一种选择。我打算存储一个字段单位类型,即这个字段是一个速度,以及一个到达基本单位的方程式,即如果速度字段具有 m/s 和基本字段以 ft/sec 为单位乘以 3.28,但我我不确定如何构建它。所以理想情况下,上面的字段应该是这样的:

{"Speed":"1 m/s"},
{"Speed":"1 mph"},
{"Distance": "1 ft"},
{"Distance":"1 meter"}

会成为

{"Speed":{"base(ft/sec)":3.28,"orig_val":1,"orig_unit":"m/s"},
{"Speed":{"base(ft/sec)":1.47,"orig_val":1,"orig_unit":"mph"},
{"Distance":{"base(in)":12,"orig_val":1,"orig_unit":"ft"},
{"Distance":{"base(in)":39.37,"orig_val":1,"orig_unit":"meter"}
4

1 回答 1

0

一些想法。

将特定字段存储为同一单位,无论您如何捕获 - 例如,距离始终存储为英尺。该字段将存储为{ distance_feet: 120 }.

在捕获时存储特定的字段,即可以使用不同的单位捕获一个字段。这将有一个附加字段指定“单位”。例如,{ distance: 120, units: "feet" }。在这种情况下,字段单位可以是“英尺”或“米”。

在这两种情况下,应用程序(或程序)逻辑都可以处理从英尺到米的转换,反之亦然。

一个称为“conversion_factor”的附加字段可以存储在集合中(例如,对于英尺和米的转换,{ conversion_factor: 3.38084 })。这涉及在数据库中多次存储相同的信息,并且在读取数据时会增加大量数据,这会增加存储空间和内存——这是一个需要考虑的因素。

要存储哪些信息以及如何存储取决于以下因素:

  • 这些数据的用途是什么以及如何在应用程序中使用它?
  • 被查询了吗?如何以及以什么格式?以什么格式捕获?多常?对这些数据进行什么样的计算(计算、比较等)?

我认为应用程序需求或功能应该驱动您如何设计数据,而不是您必须如何对其进行编程。在这个阶段你应该知道你将对数据做哪些重要的事情。

我有大约 20 种不同的字段类型,例如速度、距离、功率、面积、角度等。我想将不同单位类型的所有字段存储在同一个单位中,以便进行比较。

我认为,比较是一种计算,程序可以处理诸如“转换因子”之类的数据并从一个单位转换为另一个单位。

于 2020-02-13T04:23:57.907 回答