如何将字符串转换为BSON?

时间:2015-03-06 12:08:08

标签: python json mongodb pymongo

我有一个这样的字符串:

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模块,但没有运气。

2 个答案:

答案 0 :(得分:6)

这不是重要的BSON部分。 MongoDB驱动程序将负责这一点。您的工作是将JSON转换为有效的python数据结构:

import json

data = json.loads(document)

collection.insert(data);

答案 1 :(得分:1)

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

作为数据库的用户或其中一个客户,您只需要处理我们作为文档谈论的key:value类型对象。在python中,key:value类对象最常见的是dict个对象;一本字典。 在将该字符串插入mongo之前,您需要将该字符串转换为实际的类似dict的对象。

这方面的一个例子是使用json模块:

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

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