我正在尝试做一些我觉得微不足道的事情,如果其他地方有一些简单的解决方案,请原谅我。
我正在为一些内容索引编写测试,为此我试图将一些二进制数据(pdf)插入我拥有的 mongo 集合中。但是,我在这方面遇到了很多麻烦。这是我相关代码的当前状态
pseudo_file = StringIO()
pdf = pisa.CreatePDF("This is a test", pseudo_file)
test = {"data": pseudo_file}
test.update({"files_id": {"name": "random_asset_name"}, "category": "asset"})
self.chunk_collection.insert(json.dumps(test))
我设法在 Pymongo 谷歌组上找到一个旧线程来解决这个问题 ( https://groups.google.com/forum/#!topic/mongodb-user/uBAbY1wdQbs ),但我似乎找不到用于解决该问题的 Binary
对象,并且它似乎没有包含在 Python 中(我使用的是 2.7)
现在我遇到的问题是 StringIO
对象不是 JSON 可序列化的,这是明智的,但 pymongo 需要传递给它的有效 utf8 对象。我尝试使用 StringIO.getvalue()
的 base64 编码,并直接序列化相同的值。
当然 pdf 不是 utf8 值,所以我想知道是否有另一种方法让 pymongo 识别我正在向它发送原始二进制文件。感谢您的帮助。
最佳答案
Google 群组实际上是正确的,但是,在该帖子发布后的某个时候,binary
类被移动到 bson
命名空间,因此您必须从那里导入它。
文档页面上有很好的示例:http://api.mongodb.org/python/current/api/bson/binary.html
关于python - 将二进制数据插入pymongo中的Mongo字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213544/