2016-03-23 2 views
-1

У меня есть CSV-файл с даннымиПреобразование нулевых полей типа данных Строка после CSV импорта

id,amount,comments 
"1",5.0,"cccc" 
"2",4.0,"cccc" 
"3",,"cccc" 

теперь, когда я импортировать CSV в MongoDB поле суммы за последний объект был импортирован как строку с «» как ценность.

{ 
    "_id" : ObjectId("56f26dc2e5ec3103f7123e65"), 
    "id" : 1, 
    "amount" : 5, 
    "comments" : "cccc" 
} 
{ 
    "_id" : ObjectId("56f26dc2e5ec3103f7123e66"), 
    "id" : 2, 
    "amount" : 4, 
    "comments" : "cccc" 
} 
{ 
    "_id" : ObjectId("56f26dc2e5ec3103f7123e67"), 
    "id" : 3, 
    "amount" : "", 
    "comments" : "cccc" 
} 

Но я хочу это поле в двухместном номере со значением 0,0 Как добиться этого в MongoDB?

+0

'mongoimport' не будет делать это по своему усмотрению и в основном не предназначен как инструмент для такого рода вещей. Если вы хотите заменить значения, то сначала замените их во входном файле или обновите значения «после», которые вы импортируете. Если это ваш «собственный код», который выполняет импорт, просто сделайте свой код заменяющим значения. –

ответ

0

Самый лучший способ, чтобы соответствовать «струны» в "amount" поле с помощью оператора $type в .update() высказыванием и $set значение на 0 вместо.

db.collection.update(
    { "amount": { "$type": 2 } }, 
    { "$set": { "amount": 0 } }, 
    { "multi": true } 
) 

"multi" опция применяется обновление для каждого документа, который соответствует условию

Вы можете поочередно просто соответствовать на пустой строке "":

db.collection.update(
    { "amount": "" }, 
    { "$set": { "amount": 0 } }, 
    { "multi": true } 
) 

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

Смежные вопросы