Я делаю etl для загрузки данных с sql-сервера в mongodb. У меня есть поле десятичного типа в sql, но когда я выполняю процесс загрузки, тип данных для этого поля изменяется на int32 в mongodb. Кто-нибудь знает, почему это происходит? благодарит заранее.десятичное поле преобразуется в int32 при выполнении etl из sql в mongodb
ответ
Ответ подразумевает то, что я указал в комментариях:
MongoDB не имеет decimal
тип, поддерживаемый на сегодняшний день. Вам нужно будет сделать с int
или float
/double
.
При нажатии любой абонентский номер .0
, такие как 1,0 в Монго, он записывает его как int
но любое число с плавающей точкой, как 1.1 будет рассматриваться как double
.
Это не должно быть проблемой, потому что Mongo может запускать агрегаты просто отлично, без литья типов. Помните, Mongo указывает типы на уровне поля документа, а не на уровне столбца в SQL. Я уверен, что большинство драйверов будут неявно использовать значение, если вы сопоставляете это поле с двойным типом для строго типизированного объекта.
Если вам действительно нужно это сделать, посмотрите на this post, где мне пришлось обновить тип поля от string
до double
. Та же логика будет применяться и к преобразованию int
в double
.
Mongo не имеет десятичного типа данных. В зависимости от вашего адаптера он может преобразовать его в строку, int или double/float. – RizJa
преобразует значение в int в mongodb. если я хочу показать значения как double/float, мне нужно сначала преобразовать десятичное значение в double/float? –
Да, когда вы загружаете данные в Mongo, тип должен быть double/float вместо десятичного. Как именно вы загружаете данные в Mongo? Задача скрипта? Или какой-то сторонний компонент? – RizJa