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-8

from 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()

是导入时候的问题导致数据类型错误吗?


Mongodb 如何转换字段内值的数据类型(type)
Mongodb 如何转换字段内值的数据类型(type)


回答:

可以截图一部分csv数据吗?

以上是 Mongodb 如何转换字段内值的数据类型(type) 的全部内容, 来源链接: utcz.com/p/938385.html

回到顶部