Pymon go при использовании find_one не возвращает значение, если число представлено как строка - PullRequest
0 голосов
/ 19 июня 2020

У меня есть объект коллекции, созданный следующим образом:

from pymongo import MongoClient
collection=MongoClient(r'mongodb://localhost:27017/')['test']['cars']

collection.insert({"_id":30,"model":"Audi"})

Функция find it self возвращает:

 collection.find({'_id':30})
 {'_id': 30, 'model':'Audi'}

find_one с целым числом:

collection.find_one({'_id':30})
{'_id': 30, 'model':'Audi'}

Но find_one со строкой :

collection.find_one({'_id':"30"})
None

Есть ли обходной путь или он должен быть таким?

Имеют ли значение данные тип создания поля?

Даже если эквивалент приведения строки как int это то же самое.

1 Ответ

1 голос
/ 19 июня 2020

Что касается MongoDB, 30 и "30" разные. База данных не особо заботится о том, какой из них вы используете, и не будет (по умолчанию) проверять, поэтому вам нужно будет убедиться, что типы совпадают в ваших запросах.

Если это проблема, вы можете добавьте проверку уровня коллекции , чтобы указать ожидаемые типы BSON для каждого поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...