CSV导入后转换String数据类型的空字段

时间:2016-03-23 10:36:24

标签: mongodb mongodb-query

我有一个带数据的csv文件

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

现在当我在mongodb中导入这个csv时,最后一个对象的amount字段被导入为一个字符串,带有""作为一种价值。

{ 
    "_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"
} 

但我希望Double中的这个字段的值为0.0 如何在mongodb中实现这一目标?

1 个答案:

答案 0 :(得分: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 }
)

但是在你的情况下,除非你在集合上发生了其他写操作,否则可以认为任何字符串都可以覆盖。