在python中遍历BSON二进制表示?

时间:2014-03-29 14:03:44

标签: mongodb bson

我不想将整个BSON文档反序列化为python dict,而是希望直接遍历它,利用BSON格式的本机遍历[1,2]

可以使用任何python BSON库吗?我可以很容易地看到获取字典的方法,但是遍历二进制格式的方法似乎并不明显。

  1. https://groups.google.com/forum/#!topic/bson/e7aBbwA6bAE
  2. http://bsonspec.org/

2 个答案:

答案 0 :(得分:1)

这听起来像你在寻找:https://github.com/bauman/python-bson-streaming

它允许流式传输bson,而不是将整个文件加载到内存中。

来自文档:

from bsonstream import KeyValueBSONInput
from sys import argv

for file in argv[1:]:
    f = open(file, 'rb')
    stream = KeyValueBSONInput(fh=f, fast_string_prematch="somthing") #remove fast string match if not needed
    for id, dict_data in stream:
        if id:
            ...process dict_data...

答案 1 :(得分:0)

您遇到的问题是将BSON字符串转换为迭代器,迭代器本身就是一个对象,您必须实际转换为语言结构,即字典。

即使使用BSON库,它仍然必须将其转换为python理解的可遍历对象,a.k.a a dict。

然而,要回答你的问题:我一无所知。