Mongodb 如何转换字段内值的数据类型(type)
{ "_id" : ObjectId("625e60be100aeee3cf399b96"),
"id" : "2elBjNSdBE2Y3f0j1mjrql",
"followers" : "2264501.0",
"genres" : "['c-pop', 'mandopop', 'taiwan pop', 'zhongguo feng']",
"name" : "Jay Chou",
"popularity" : "74"
}
可以看到 followers、genres、popularity都是字符串
followers+popularity字段 通过mongodb 自带的进行转换 写法可否优化简短
db.artists.find({'followers': {$type:2}}).forEach( function(doc){
db.getCollection('artists').update({'_id': doc._id},{$set:{'followers': parseFloat(doc.followers)}})
}
)
genres字段 通过Pymongo进行转换 速度堪忧
python">if type(a.get('genres')) == type(''): col.update_many(
{'genres':{'$type':"string"}},
{'$set':{'genres':eval(a.get('genres'))}},
)
想请教大牛,有没有更好的方法,对了 原始数据是通过csv导入
# coding:utf-8from pymongo import MongoClient
import datetime
import csv
def GetMongoDBcol():
client = MongoClient('localhost', 27017) # 连接
db = client.spotify # 数据库
col = db.artists # 数据表
print('连接成功:')
return col
def ImportMongoDB(fname,col):
# fname: CSV文件
# col: 集合
csvFile = open(fname,'r',encoding='utf-8') # 打开本地文件
data = csv.DictReader(csvFile) # 转换为字典格式打开
s_time = datetime.datetime.now() # 记录开始时间戳
col.insert_many(data) # 插入库
e_time = datetime.datetime.now() # 记录结束时间戳
num = col.count_documents({}) # 插入数据数量
if num > 0:
print('导入成功!')
print('导入数量:' + str(num) + '条!')
print('导入耗时:' + str((e_time-s_time).seconds) + '秒!')
else: pass
def main():
# 源文件路径
file = r"C:\Users\i\OneDrive\Code\Data\artists.csv"
# 获得表名字
col = GetMongoDBcol()
# 数据导入表
ImportMongoDB(file,col)
main()
是导入时候的问题导致数据类型错误吗?
回答:
可以截图一部分csv数据吗?
以上是 Mongodb 如何转换字段内值的数据类型(type) 的全部内容, 来源链接: utcz.com/p/938385.html