我有一个带数据的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中实现这一目标?
答案 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 }
)
但是在你的情况下,除非你在集合上发生了其他写操作,否则可以认为任何字符串都可以覆盖。