python – 为什么使用整数作为pymongo的键不起作用?

python – 为什么使用整数作为pymongo的键不起作用?,第1张

概述我在 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 MongoClIEnttestColl = MongoClIEnt().tDB.tColldata = {'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文档集合中使用此类表示法(如果要访问数字索引)有几个缺点.

总结

以上是内存溢出为你收集整理的python – 为什么使用整数作为pymongo的键不起作用?全部内容,希望文章能够帮你解决python – 为什么使用整数作为pymongo的键不起作用?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1207173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存