【问题标题】:How to save decimal heights in MongoDB如何在 MongoDB 中保存小数高度
【发布时间】:2020-11-13 10:46:38
【问题描述】:

我在 mongodb 中保存数值时遇到了这个奇怪的问题。 我在 mongodb 中将人的高度保存为 Number,因此高度为 5'.1" 的人保存为 5.1,高度为 5'.10" 的人也保存为 5.1。

我无法将其更改为字符串,因为我有一个基于数字的搜索查询,("height" : {"$gte": req.body.height.minimum_height, "$lte": req.body.高度.maximum_height})。

我确信必须有一种方法来保存特定值来处理货币交易,但我不确定如何在我的场景中做到这一点。

欢迎提出建议!!

【问题讨论】:

  • 还有什么问题?或者你的问题是什么? DB 按原样存储值。您可以在客户端应用程序中格式化号码。还是我误解了什么?
  • 您使用的是哪个版本的 mongoDB?

标签: node.js mongodb mongoose mongodb-query


【解决方案1】:

由于高度已经是一个数字,最好以公制单位处理,并遵循以厘米为单位表示高度的约定。

当检索高度时,然后作为@J.F.在评论中建议它可以在客户端应用程序或其他任何需要的地方进行格式化。

存储高度时可以转换为厘米。

例如5'10''变成(5 x 12 + 10) x 2.54 = 177.8

【讨论】:

    【解决方案2】:

    一种解决方案是使用两个字段:数值和显示值。

    对于 5' 10",数值为 5 + 10/12,即 5.83333...

    irb(main):001:0> 5+(10/12.0)
    => 5.833333333333333
    

    然后使用数字字段进行搜索和计算,并将5' 10"保留在显示字段中以呈现给用户。

    或者你可以只存储数值并计算显示值:

    irb(main):007:0> i = (5.833333333333333 * 12).round; f = i / 12; i = i % 12
    => 10
    irb(main):008:0> f
    => 5
    irb(main):009:0> i
    => 10
    irb(main):010:0> "#{f}' #{i}\""
    => "5' 10\""
    irb(main):011:0> 
    

    【讨论】:

      猜你喜欢
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多