Подтвердить что ты не робот

Поддерживает ли MongoDB типы с плавающей запятой?

Я переношу базу данных mysql в mongodb. Но я читал в типах данных MongoDb, и тогда нет ссылок на типы с плавающей запятой, такие как float, double, decimal.

И как у меня есть некоторые поля с десятичными типами в моей схеме sql, как я могу это сделать или что я могу сделать?

4b9b3361

Ответ 1

MongoDB хранит данные в двоичном формате BSON, который поддерживает эти числовые типы данных:

  • int32 - 4 байта (32-разрядное целое число со знаком)
  • int64 - 8 байтов (64-разрядное целое число со знаком)
  • double - 8 байтов (64-битная плавающая точка IEEE 754)

Нет точного значения с фиксированной точкой, эквивалентного типу mySQL decimal в MongoDB, но вы можете хранить 64-битные числа с плавающей запятой в Mongo как double.

Стоит упомянуть, что оболочка MongoDB, являющаяся оболочкой JavaScript, не распознает различие между целыми и значениями с плавающей запятой, она обрабатывает все числа одинаковыми, поскольку JavaScript представляет все числа как 64-битную плавающую точку, независимо от того, их базовый тип BSON.

Большинство языковых драйверов MongoDB, однако, делают различие между целыми и плавающими типами.

Ответ 2

Крис уже предоставил информацию о типах с плавающей точкой, поэтому я просто добавлю информацию о десятичный тип данных, который был добавлен в Mongo 3.4

3.4 добавляет поддержку формата decimal128 с новым десятичным типом данных. Формат decimal128 поддерживает номера до 34 десятичных знаков цифры (то есть значащие цифры) и диапазон экспоненциального диапазона от -6143 до +6144.

В отличие от двойного типа данных, в котором сохраняется только аппроксимация десятичные значения, тип десятичных данных сохраняет точное значение. Для Например, десятичный NumberDecimal ( "9.99" ) имеет точное значение 9.99 где в качестве двойного 9.99 будет иметь приблизительное значение 9,9900000000000002131628...

Ответ 3

Он имеет Introduction

Значение

  • базовый тип типа string, integer, float, timestamp, двоичный и т.д.,
  • документ или
  • массив значений

Ответ 4

MongoDB поддерживает сохранение удвоений, но не все драйверы по какой-либо причине предоставляют им интерфейс.

Из http://www.mongodb.org/display/DOCS/Data+Types+and+Conventions -

Mongo использует специальные типы данных в дополнение к базовым типам JSON: string, integer, boolean, double, null, array и object.

Ответ 5

Фактически каждое число в MongoDB является 64-битным числом с плавающей запятой. Проблема возникает из-за того, что оболочка Javascript не может представлять некоторые значения с плавающей запятой. У вас не должно возникнуть проблем с преобразованием ваших поплавок, удвоений или десятичных знаков в числа в Монго.