在通过pymongo从MongoDB获取bson文档并转换为json后访问json对象字段时出错

时间:2014-11-07 14:01:42

标签: python json mongodb pymongo bson

我看过很多关于在pymongo中进行MongoDB查询后返回的bson文件转换为json的帖子。

就我而言,我从MongoDB中存储的Cuckoo分析结果中获取了一个文档。我可以访问并打印该bson文档中的特定字段。但是,在使用bson的json_util将其转换为json并尝试访问同一字段后,我收到错误。使用该对象还有什么事要做吗?

以下是代码:

from pymongo import MongoClient
from bson.json_util import dumps, default

<...pymongo code for connecting to MongoDB server...>

result_cursor = analysis.find({"info.id": 1770}, {"behavior.summary": 1})
for doc in result_cursor:
    print doc["behavior"]
    doc_json = dumps(doc, default=default)
    print doc_json["behavior"]

从上面的代码中,第一个打印工作正常,但最后一个触发异常,因为我认为它将对象视为列表而不是字典:

  

{u&#39;摘要&#39;:{u&#39; files&#39;:.....}}

     

Traceback(最近一次调用最后一次):文件   &#34; C:/Users/itisnobody/PycharmProjects/mongo-cuckoo/mongodb-cuckoo.py" ;,   第42行,在       print doc_json [&#34; behavior&#34;] TypeError:字符串索引必须是整数,而不是str

1 个答案:

答案 0 :(得分:1)

bson.json_util.dumps将您的文档转换为JSON 字符串(转储是&#34的缩写;转储字符串&#34;)。

您似乎正在尝试创建&#34; JSON dict&#34;,但您的文档(doc)就是这样。我的猜测是,您可以完全跳过dumps并直接与doc合作。