我按以下方式创建了一个集合对象:
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 类型。