gpt4 book ai didi

Python Mongodb,类型错误: document must be an instance of dict, bson.son.SON,bson.raw_bson

转载 作者:行者123 更新时间:2023-12-01 02:28:29 24 4
gpt4 key购买 nike

我能够从 URL 检索 JSON 文件并将其分配给一个变量以打印出来进行测试,但我在将其插入 MongoDB 时遇到了真正的问题。这是我的代码。

import urllib.request, json
from datetime import datetime
import pymongo
from pymongo import *
client = MongoClient()
db = client['2marte71']
posts = db.posts
with urllib.request.urlopen("http://southamptonstudentrooms.com/IoT/arduinoData.php") as url:
data = json.loads(url.read().decode())
print(data) # just to test json data
result = posts.insert_one(data).inserted_id

shell 输出:

[{'temp': '24', 'time': '00:35:17', 'ldr': '40', 'hum': '44'}, {'temp': '24', '时间': '00:37:21', 'ldr': '40', '哼': '44'}, {'temp': '24', '时间': '00:39 :25', 'ldr': '40', '哼': '44'}, {'temp': '23', '时间': '00:00:13', 'ldr': '50', '哼': '46'}, {'temp': '23', '时间': '00:02:16', 'ldr': '39', '哼': '46'}, {'temp ': '23', '时间': '00:04:20', 'ldr': '39', '哼': '46'}, {'temp': '23', '时间': '00 :06:24', 'ldr': '39', 'hum': '46'}, {'temp': '23', '时间': '00:08:28', 'ldr': '39 ', 'hum': '46'}, {'temp': '23', '时间': '00:10:31', 'ldr': '39', 'hum': '46'}, { 'temp': '23', 'time': '00:12:35', 'ldr': '39', 'hum': '46'}, {'temp': '23', 'time': '00:14:39', 'ldr': '50', 'hum': '46'}, {'temp': '23', '时间': '00:16:43', 'ldr': '39', '哼': '46'}, {'临时': '23', '时间': '00:18:46', 'ldr': '36', '哼': '46'} , {'temp': '23', 'time': '00:20:50', 'ldr': '36', 'hum': '45'}, {'temp': '23', '时间': '00:22:54', 'ldr': '37', '哼': '45'}, {'temp': '23', '时间': '00:24:58', 'ldr ': '37', '哼': '45'}, {'temp': '23', '时间': '00:27:01', 'ldr': '38', '哼': '45 '}, {'temp': '24', '时间': '00:29:05', 'ldr': '41', 'hum': '45'}, {'temp': '24', '时间': '00:31:09', 'ldr': '41', '哼': '44'}, {'temp': '24', '时间': '00:33:13', 'ldr': '40', 'hum': '44'}]

Traceback (most recent call last):
File "testPythonJson.py", line 11, in <module>
result = posts.insert_one(data).inserted_id
File "/usr/local/lib/python3.5/dist-packages/pymongo/collection.py", line 664, in insert_one
common.validate_is_document_type("document", document)
File "/usr/local/lib/python3.5/dist-packages/pymongo/common.py", line 409, in validate_is_document_type
"collections.MutableMapping" % (option,))
TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping

最佳答案

简单易行。您正在尝试将数组插入到 mongo 中。将数组包装在顶级字典中以插入单个文档,并将数组作为属性:

data = {data:data}
result = posts.insert_one(data).inserted_id

或使用允许一次插入多个文档的功能之一:

posts.insert_many(data)

然后每个数组项将是一个单独的文档。

关于Python Mongodb,类型错误: document must be an instance of dict, bson.son.SON,bson.raw_bson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47098555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com