Pymongo 在使用 find_one 时,如果数字转换为字符串,则不返回值



我按以下方式创建了一个集合对象:

from pymongo import MongoClient
collection=MongoClient(r'mongodb://localhost:27017/')['test']['cars']
collection.insert({"_id":30,"model":"Audi"})

查找它自己返回:

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,它也是一样的。

就MongoDB而言,30"30"是不同的。数据库不太介意您使用哪一个,并且(默认情况下(不会检查,因此您需要确保查询中的类型匹配。

如果这是一个问题,您可以添加集合级别验证以指定每个字段的预期 BSON 类型。

最新更新