Python-программа сообщает, что «BinData не определен»
Вы видите это сообщение об ошибке, потому что BinData
- это утилита оболочки mongo для представления Тип двоичных данных BSON .
В Python это представляется по-разному, используя PyMongo . Если вы используете Python3 , тогда вы можете просто использовать тип байтов Python. Например:
data = b"Ats\\Quote\\Model\\Quote"
collection.update_many({}, {"$set":{"__class": data }})
Это приведет к значению BinData(0, "QXRzXFF1b3RlXE1vZGVsXFF1b3Rl")
в коллекции MongoDB.
Если вы используете Python2 , данные должны быть упакованы как экземпляр bson.binary.Binary
из модуля bson .
BinData (128, "QXRzXFF1b3RlXE1vZGVsXFF1b3Rl")
Также стоит отметить, что способ построения BinData
не является распространенным BSON (хотя у вас может быть особая причина).
BinData
принимает параметры в виде BinData(subtype, base64str)
. Подтип используется для указания того, какие данные находятся в байтовом массиве. В соответствии со спецификацией BSON * общий двоичный подтип равен 0
. Это наиболее часто используемый двоичный подтип и должен использоваться по умолчанию для драйверов MongoDB (например, PyMongo) и инструментов.
Хотя подтипы от нуля до 127 предопределены или зарезервированы, подтипы от 128 до 255 определяются пользователем. Если вы специально не указали 128 для определения своего собственного типа, я бы предложил использовать 0
.