我以前的方式是运行此功能
import bson
def has_binary(d):
if type(d)==bson.Binary:
return True
if type(d)==dict:
for k,v in d.iteritems():
if has_binary(v):
return True
return False
这不再有效,因为bson库没有属性' binary'
答案 0 :(得分:1)
您似乎正在使用第三方py-bson,可能是由于pip install bson
。
而不是mongodb支持python-bson pip install pymongo
。
https://github.com/mongodb/mongo-python-driver/tree/master/bson
注意安装:
可以使用pip安装PyMongo:
$ python -m pip install pymongo
不要安装“bson”软件包。 PyMongo有自己的bson 包;做“easy_install bson”安装第三方软件包 与PyMongo不兼容。
你可以切换到bson的mongodb版本,你的函数就可以正常工作,或者改变你的is_binary函数来适应pybson将所有内容解码为python2中的字符串和python3中的字节的事实。
https://github.com/py-bson/bson/blob/master/bson/codec.py#L303-L307