python – 为什么使用整数作为pymongo的键不起作用?
发布时间:2020-12-15 10:34:39 所属栏目:Python 来源:互联网
导读:我在 python中使用更大的数据集尝试了这个并且有问题,所以我创建了一个小测试集,也在python中使用pymongo: from pymongo import MongoClienttestColl = MongoClient().tDB.tColldata = {foo: bar, baz: {1: {a: B}}, _id: AB123456789}tes
我在 python中使用更大的数据集尝试了这个并且有问题,所以我创建了一个小测试集,也在python中使用pymongo: from pymongo import MongoClient testColl = MongoClient().tDB.tColl data = {'foo': 'bar','baz': {1: {'a': 'B'}},'_id': 'AB123456789'} testColl.insert(data) 这回来了 bson.errors.InvalidDocument: documents must have only string keys,key was 1 用bz替换baz字典中的1,相应地将错误更改为2 为什么是这样?我错过了关于Mongo的ids的事吗? 解决方法我已经提交了对你帖子标题的编辑,因为它对你遇到的问题有些误导.您没有尝试按指示更新_id字段,而是您的Python字典定义与BSON规范不兼容.在这一行: data = {'foo': 'bar','_id': 'AB123456789'} 您有一个数字(整数)作为密钥值,在Mongo术语中,是一个文档.在BSON规范中从JSON派生,这是无效的,您的密钥必须是规范中要求的字符串. bson.errors.InvalidDocument: documents must have only string keys,key was 1 您需要将Python代码中的所有密钥保存为字符串才能符合要求. data = {'foo': 'bar','baz': {'1': {'a': 'B'}},'_id': 'AB123456789'} 将键的表示更改为字符串可以解决问题. 请注意,请考虑您的文档结构,因为使用数组时,在MongoDB文档集合中使用此类表示法(如果要访问数字索引)有几个缺点. (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |