Repasemos los errores:
-
El primer error aparece simplemente porque necesita un objeto BSON real. Tenga en cuenta que nunca ha codificado ningún dato, creando
bson.binary.Binary
objeto no significa invocarBSON.encode()
. -
Y ahí es donde PyMongo te engaña un poco. El
bson.binary.Binary
es unstr
parcheado en tiempo de ejecución obytes
instancia (ver fuente ). Por eso obtienes el segundo error:lo que llamas es en realidadstr.decode()
, noBSON.decode()
. Entonces,gotfield
contiene los datos flotantes aleatorios que almacenó inicialmente, pero el objeto en sí tiene algunos métodos diferentes (por ejemplo,repr()
) vinculado a él.