首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python,将mongodump的bson输出转换为json对象数组(字典)。

Python,将mongodump的bson输出转换为json对象数组(字典)。
EN

Stack Overflow用户
提问于 2015-12-16 19:10:49
回答 2查看 3.9K关注 0票数 5

我已经使用mongodump命令转储了一个mongodb集合。输出是一个转储目录,其中包含以下文件:

代码语言:javascript
运行
复制
dump/
    |___coll.bson
    |___coll.metadata.json

如何将导出的文件打开到在python中工作的字典数组?我试过以下几种方法,但都没有用:

代码语言:javascript
运行
复制
with open('dump/coll.bson', 'rb') as f:
    coll_raw = f.read()
import json
coll = json.loads(coll_raw)

# Using pymongo
from bson.json_util import loads
coll = loads(coll_raw)

ValueError: No JSON object could be decoded
EN

Stack Overflow用户

发布于 2016-01-20 16:24:58

我知道很久以前就已经回答了这个问题,但是您可以尝试分别解码每个文档,然后知道是哪个文档导致了问题。

我使用这个库:https://github.com/bauman/python-bson-streaming

代码语言:javascript
运行
复制
from bsonstream import KeyValueBSONInput
f = open("restaurants.bson", 'rb')
stream = KeyValueBSONInput(fh=f)
for dict_data in stream:
    print dict_data
f.close()

我看到25359张唱片,它们似乎都解码成了这样的东西:

代码语言:javascript
运行
复制
{u'_id': ObjectId('5671bb2e111bb7b9a7ce4d9a'),
 u'address': {u'building': u'351',
              u'coord': [-73.98513559999999, 40.7676919],
              u'street': u'West   57 Street',
              u'zipcode': u'10019'},
 u'borough': u'Manhattan',
 u'cuisine': u'Irish',
 u'grades': [{u'date': datetime.datetime(2014, 9, 6, 0, 0),
              u'grade': u'A',
              u'score': 2},
             {u'date': datetime.datetime(2013, 7, 22, 0, 0),
              u'grade': u'A',
              u'score': 11},
             {u'date': datetime.datetime(2012, 7, 31, 0, 0),
              u'grade': u'A',
              u'score': 12},
             {u'date': datetime.datetime(2011, 12, 29, 0, 0),
              u'grade': u'A',
              u'score': 12}],
 u'name': u'Dj Reynolds Pub And Restaurant',
 u'restaurant_id': u'30191841'}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34320177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档