我正在尝试将 json 数据从包含有效 json 数据的链接导入到 MongoDB。 当我运行脚本时,出现以下错误:
TypeError:文档必须是 dict、bson.son.SON、bson.raw_bson.RawBSONDocument 的实例,或者继承自 collections.MutableMapping 的类型
我在这里错过了什么或做错了什么?
import pymongo
import urllib.parse
import requests
replay_url = "http://live.ksmobile.net/live/getreplayvideos?"
userid = 769630584166547456
url2 = replay_url + urllib.parse.urlencode({'userid': userid}) + '&page_size=1000'
print(f"Replay url: {url2}")
raw_replay_data = requests.get(url2).json()
uri = 'mongodb://testuser:[email protected]:45687/liveme'
client = pymongo.MongoClient(uri)
db = client.get_default_database()
replays = db['replays']
replays.insert_many(raw_replay_data)
client.close()
我看到您正在获取22个视频的视频信息数据。
您可以使用:
replays.insert_many(raw_replay_data['data']['video_info'])
为了拯救他们
您可以将一个字段设置为 mongodb 文档的
_id
在
insert_many
之前使用以下行
for i in raw_replay_data['data']['video_info']:
i['_id'] = i['vid']
这将使“vid”字段成为您的“_id”。只需确保所有视频的“vid”都是唯一的。
收到此错误消息,我该如何解决?
对于 raw_replay_data(["data"]["video_info"]) 中的 i: ~~~~~~~~~^^^^^^^^^^^^^^ 类型错误:列表索引必须是整数或切片,而不是 str