Esaminiamo gli errori:
-
Il primo errore viene visualizzato semplicemente perché è necessario un oggetto BSON effettivo. Nota che non hai mai codificato alcun dato, creando
bson.binary.Binaryoggetto non significa invocareBSON.encode(). -
Ed è qui che PyMongo ti inganna un po'. Il
bson.binary.Binaryè unstrcon patch di runtime obytesistanza (vedi sorgente ). Ecco perché ottieni il secondo errore:quello che chiami è in realtàstr.decode(), nonBSON.decode(). Quindi,gotfieldcontiene i dati float casuali che hai memorizzato inizialmente, ma l'oggetto stesso ha alcuni metodi diversi (ad es.repr()) ad esso vincolato.