2017-02-01 19 views
0

Я делаю etl для загрузки данных с sql-сервера в mongodb. У меня есть поле десятичного типа в sql, но когда я выполняю процесс загрузки, тип данных для этого поля изменяется на int32 в mongodb. Кто-нибудь знает, почему это происходит? благодарит заранее.десятичное поле преобразуется в int32 при выполнении etl из sql в mongodb

+0

Mongo не имеет десятичного типа данных. В зависимости от вашего адаптера он может преобразовать его в строку, int или double/float. – RizJa

+0

преобразует значение в int в mongodb. если я хочу показать значения как double/float, мне нужно сначала преобразовать десятичное значение в double/float? –

+0

Да, когда вы загружаете данные в Mongo, тип должен быть double/float вместо десятичного. Как именно вы загружаете данные в Mongo? Задача скрипта? Или какой-то сторонний компонент? – RizJa

ответ

0

Ответ подразумевает то, что я указал в комментариях:

MongoDB не имеет decimal тип, поддерживаемый на сегодняшний день. Вам нужно будет сделать с int или float/double.

При нажатии любой абонентский номер .0, такие как 1,0 в Монго, он записывает его как int но любое число с плавающей точкой, как 1.1 будет рассматриваться как double.

Это не должно быть проблемой, потому что Mongo может запускать агрегаты просто отлично, без литья типов. Помните, Mongo указывает типы на уровне поля документа, а не на уровне столбца в SQL. Я уверен, что большинство драйверов будут неявно использовать значение, если вы сопоставляете это поле с двойным типом для строго типизированного объекта.

Если вам действительно нужно это сделать, посмотрите на this post, где мне пришлось обновить тип поля от string до double. Та же логика будет применяться и к преобразованию int в double.