Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pymongo导入json数据时出现TypeError_Python_Mongodb_Python 3.x_Pymongo - Fatal编程技术网

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

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.

我正在尝试将包含有效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.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
并检查结果当我运行两次时,会得到重复的条目。你能帮助我如何不插入已经存在的视频,而只添加新的视频吗。让它跳过已经插入的实体。当我运行它两次时,会得到重复的条目。你能帮助我如何不插入已经存在的视频,而只添加新的视频吗。使其跳过已插入的实体。