Нека да прегледаме грешките:
-
Първата грешка се появява просто защото имате нужда от действителен BSON обект. Имайте предвид, че никога не сте кодирали данни - създавайки
bson.binary.Binary
обект не означава извикване наBSON.encode()
. -
И това е мястото, където PyMongo ви мами малко.
bson.binary.Binary
еstr
с корекция по време на изпълнение илиbytes
екземпляр (вижте източника ). Ето защо получавате втората грешка:това, което наричате, всъщност еstr.decode()
, а неBSON.decode()
. И така,gotfield
съдържа произволните плаващи данни, които сте съхранили първоначално, но самият обект има някои различни методи (напр.repr()
), свързан с него.