Przejdźmy przez błędy:
-
Pierwszy błąd pojawia się po prostu dlatego, że potrzebujesz rzeczywistego obiektu BSON. Zauważ, że nigdy nie zakodowałeś żadnych danych - tworząc
bson.binary.Binaryobiekt nie oznacza wywołaniaBSON.encode(). -
I tutaj PyMongo trochę cię oszukuje.
bson.binary.Binaryjest poprawionym w czasie wykonywaniastrlubbytesinstancja (patrz źródło ). Dlatego pojawia się drugi błąd:to, co wywołujesz, to w rzeczywistościstr.decode(), a nieBSON.decode(). A więcgotfieldzawiera losowe dane zmiennoprzecinkowe, które początkowo zapisałeś, ale sam obiekt ma kilka różnych metod (np.repr()) jest z nim związany.