使用pymongo导入json数据时出现TypeError

问题描述 投票:0回答:3

我正在尝试将 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()
python mongodb python-3.x pymongo
3个回答
1
投票

我看到您正在获取22个视频的视频信息数据。

您可以使用:

replays.insert_many(raw_replay_data['data']['video_info'])

为了拯救他们


1
投票

您可以将一个字段设置为 mongodb 文档的

_id

insert_many

之前使用以下行
for i in raw_replay_data['data']['video_info']:
    i['_id'] = i['vid']

这将使“vid”字段成为您的“_id”。只需确保所有视频的“vid”都是唯一的。


0
投票

收到此错误消息,我该如何解决?

对于 raw_replay_data(["data"]["video_info"]) 中的 i: ~~~~~~~~~^^^^^^^^^^^^^^ 类型错误:列表索引必须是整数或切片,而不是 str

© www.soinside.com 2019 - 2024. All rights reserved.