json 如何修复MongoDb中的"'str'对象不支持项赋值”错误?

b4lqfgs4  于 2022-12-01  发布在  Go
关注(0)|答案(2)|浏览(95)

我有这样一个字符串:

document = '{ time : 14/09/19 16:00:00,
   global : { full:190 , defects: 7 , btp: 6 , total: 202 } ,
   domains : [ { domain : "A" , full:7 , defects: 2 , btp: 0 , total: 9 },
               { domain : "B" , full:0 , defects: 0 , btp: 0 , total: 0 },
               { domain : "C" , full:6 , defects: 0 , btp: 0 , total: 6 },
               { domain : "D" , full:26 , defects: 0 , btp: 2 , total: 28 },
               { domain : "E" , full:0 , defects: 0 , btp: 0 , total: 0 },
               { domain : "F" , full:4 , defects: 0 , btp: 2 , total: 6 },
               { domain : "G" , full:0 , defects: 0 , btp: 0 , total: 0 },
               { domain : "H" , full:21 , defects: 0 , btp: 1 , total: 22 },
               { domain : "I" , full:32 , defects: 0 , btp: 0 , total: 32 },
               ] }'

当我尝试将其插入到mongoDB集合中时,我得到以下错误:
TypeError:'str'对象不支援项目指派
我不知道如何将字符串转换为BSON,以便用它执行插入。
我看了看bson_util模块,但没有运气。

qacovj5a

qacovj5a1#

这里的BSON部分并不重要,MongoDB驱动程序会处理这个问题,您的工作是将JSON转换为有效的python数据结构:

import json

data = json.loads(document)

collection.insert(data);
tyg4sfes

tyg4sfes2#

您很少需要自己直接处理BSON,这只是mongo内部用来表示数据的格式。

作为数据库的用户或者它的一个客户端,你只需要处理我们所说的key:value类型的对象,在python中,key:value类对象通常是dict对象;在将字符串插入mongo之前,需要将其转换为一个实际的dict-like-object。
例如,使用json模块:

>>> import json
>>> document = json.loads('{ time : 14/09/19 16:00:00...')

您现在可以将document对象插入到集合中。

相关问题