Python 使用pymongo导入json数据时出现TypeError
我正在尝试将包含有效json数据的链接中的json数据导入MongoDB。 运行脚本时,出现以下错误: TypeError:文档必须是dict、bson.son.son、bson.raw\u bson.RawBSONDocument的实例,或者是从collections.MutableMapping继承的类型 我在这里错过了什么或做错了什么Python 使用pymongo导入json数据时出现TypeError,python,mongodb,python-3.x,pymongo,Python,Mongodb,Python 3.x,Pymongo,我正在尝试将包含有效json数据的链接中的json数据导入MongoDB。 运行脚本时,出现以下错误: TypeError:文档必须是dict、bson.son.son、bson.raw\u bson.RawBSONDocument的实例,或者是从collections.MutableMapping继承的类型 我在这里错过了什么或做错了什么 import pymongo import urllib.parse import requests replay_url = "http://live.
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:password@ds245687.mlab.com: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'])
为了保存它们,我看到您正在获取22个视频的视频信息数据 您可以使用:
replays.insert_many(raw_replay_data['data']['video_info'])
要保存它们,您可以为mongodb文档创建一个字段作为
\u id
在插入多个
for i in raw_replay_data['data']['video_info']:
i['_id'] = i['vid']
这将使“vid”字段成为您的“\u id”。只需确保“vid”对于所有视频都是唯一的。您可以为mongodb文档创建一个字段作为
\u id
在插入多个
for i in raw_replay_data['data']['video_info']:
i['_id'] = i['vid']
这将使“vid”字段成为您的“\u id”。只需确保“视频”对所有视频都是唯一的。检查您的
原始回放数据尝试在其字典中转换,然后尝试保存it@AbdullahAhmedGhaznavi你能告诉我怎么做吗?:)insert\u many
接受字典列表。我猜你的原始数据是一本字典。使用insert_one
并检查结果检查raw_replay_数据
尝试在字典中转换,然后尝试保存it@AbdullahAhmedGhaznavi你能告诉我怎么做吗?:)insert\u many
接受字典列表。我猜你的原始数据是一本字典。使用insert_one
并检查结果当我运行两次时,会得到重复的条目。你能帮助我如何不插入已经存在的视频,而只添加新的视频吗。让它跳过已经插入的实体。当我运行它两次时,会得到重复的条目。你能帮助我如何不插入已经存在的视频,而只添加新的视频吗。使其跳过已插入的实体。