Преобразование строк на основе единиц в поле MongoDB - PullRequest
0 голосов
/ 12 февраля 2020

Я использую MongoDB для хранения различных значений на основе единиц измерения. Например, у меня есть поле скорости: "Speed":"1 m/s" или "Speed":"1 mph" У меня также есть поле расстояния, например: "Distance": "1 ft" или "Distance":"1 meter" У меня есть около 20 различных типов полей, таких как скорость, расстояние, мощность, площадь, угол, и другие я хотел бы хранить все поля разных типов единиц в одних и тех же единицах, чтобы я мог их сравнить. Я не уверен, что будет лучше сделать это при вводе или когда я читаю из базы данных, но любой из этих вариантов. Я планирую сохранить тип полевого модуля, IE это поле скорости и уравнение, чтобы добраться до базового блока, IE, если поле скорости имеет м / с и базовое поле в футах / с c, кратное 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"}

1 Ответ

0 голосов
/ 13 февраля 2020

Некоторые мысли.

Сохраните указанное поле c как одну и ту же единицу, независимо от того, как вы снимаете - например, расстояние всегда сохраняется в футах. Поле будет сохранено как { distance_feet: 120 }.

Сохранить указанное поле c по мере его захвата, т. Е. Поле может быть захвачено с различными единицами измерения. Это будет иметь дополнительное поле с указанием «единиц». Например, { distance: 120, units: "feet" }. В этом случае полевые единицы могут быть "футами" или "метрами".

В обоих случаях приложение (или программа) logi c может позаботиться о преобразовании футов в метры или наоборот.

В коллекции может быть сохранено дополнительное поле, называемое «translation_factor» (например, для преобразования футов и метров, { conversion_factor: 3.38084 }). Это включает в себя хранение одной и той же информации в базе данных много раз, и при большом объеме данных это увеличивает пространство и память при чтении данных - фактор, который необходимо учитывать.

Какую информацию хранить и как зависит от факторов :

  • Какова цель этих данных и как они используются в приложении?
  • Запрашиваются ли они? Как и в каком формате? Снято в каком формате? Как часто? Какие вычисления (вычисления, сравнения и т. Д.) Происходят с этими данными?

Я думаю, что требования к приложениям или их функциональность должны определять способ проектирования данных, а не программирование. Это. На этом этапе вы должны знать, какие важные вещи вы будете делать с данными.

У меня есть около 20 различных типов полей, таких как скорость, расстояние, мощность, площадь, угол и другие. Я хотел бы хранить все поля разных типов единиц в одних и тех же единицах, чтобы я мог их сравнить.

Я думаю, сравнение - это вычисление, и программа может позаботиться о таких данных, как «коэффициент преобразования» "и преобразование из одного блока в другой.

...