为什么在pymongo中将integer用作键不起作用?

约翰

我已经在python中使用较大的数据集尝试了此操作,但出现了问题,因此我也使用pymongo在python中创建了一个小型测试集:

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

将baz词典中的1替换为2会相应地更改为key的错误为2

为什么是这样?我是否在Mongo中缺少有关ID的信息?

尼尔·伦恩

考虑到这可能会误导您所遇到的问题,因此我对您的帖子标题进行了修改。您没有尝试_id按照指示更新字段,但是Python字典定义与BSON规范不兼容。

在这一行:

data = {'foo': 'bar', 'baz': {1: {'a': 'B'}}, '_id': 'AB123456789'}

用Mongo术语,您有一个数字(整数)作为键值。从JSON派生,在BSON规范内,这是无效的,您的密钥必须是规范中要求的字符串。

bson.errors.InvalidDocument: documents must have only string keys, key was 1

您需要将所有密钥都保留在Python代码中作为字符串,以便兼容。

data = {'foo': 'bar', 'baz': {'1': {'a': 'B'}}, '_id': 'AB123456789'}

将键的表示形式更改为字符串可解决此问题。

请注意,请考虑您的文档结构,因为在MongoDB文档集合中使用这种表示法(如果要访问数字索引)有许多缺点,而不是使用数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么退格键'\ b'在C ++中不起作用?

来自分类Dev

为什么键侦听器不起作用?

来自分类Dev

为什么ArrayList作为HashMap中的键不起作用?

来自分类Dev

为什么键盘键在Selenium WebDriver中不起作用?

来自分类Dev

为什么键和值对向量不起作用?

来自分类Dev

为什么键侦听器不起作用?

来自分类Dev

为什么退格键'\ b'在C ++中不起作用?

来自分类Dev

为什么Logitech键盘的媒体键不起作用?

来自分类Dev

为什么在使用Emacs时meta键不起作用?

来自分类Dev

为什么左Altr键在Ubuntu中不起作用?

来自分类Dev

为什么<?扩展Number>对Integer不起作用?

来自分类Dev

为什么is_integer()方法不起作用?

来自分类Dev

为什么ArrayList <Integer>包含不起作用?

来自分类Dev

为什么不起作用?

来自分类Dev

在C语言中将#define值用作函数参数-为什么起作用?

来自分类Dev

为什么`Integer('009')`不起作用,而`Float('009')`起作用?

来自分类Dev

Pymongo $ in查询不起作用

来自分类Dev

为什么在Cython中将列表转换为集合不起作用?

来自分类Dev

为什么有时某些键盘键不起作用,而另一些时候却起作用?

来自分类Dev

为什么@JoinTable上的JPA(休眠)外键定义不起作用?

来自分类Dev

从案例类中提取Map键类型时为什么不起作用?

来自分类Dev

为什么快捷键在rubymine IDE中不起作用

来自分类Dev

为什么我的代码不起作用?-setObjectForKey:键不能为零

来自分类Dev

为什么我的代码不起作用?-setObjectForKey:键不能为零

来自分类Dev

为什么配置键“ quarkus.servlet.context-path”不起作用

来自分类Dev

为什么箭头键在Microsoft Excel中不起作用?

来自分类Dev

为什么键盘快捷键在Google Chrome浏览器中不起作用?

来自分类Dev

为什么这个键重映射在Vim中不起作用?

来自分类Dev

为什么Vim中的映射键在netrw中不起作用?

Related 相关文章

  1. 1

    为什么退格键'\ b'在C ++中不起作用?

  2. 2

    为什么键侦听器不起作用?

  3. 3

    为什么ArrayList作为HashMap中的键不起作用?

  4. 4

    为什么键盘键在Selenium WebDriver中不起作用?

  5. 5

    为什么键和值对向量不起作用?

  6. 6

    为什么键侦听器不起作用?

  7. 7

    为什么退格键'\ b'在C ++中不起作用?

  8. 8

    为什么Logitech键盘的媒体键不起作用?

  9. 9

    为什么在使用Emacs时meta键不起作用?

  10. 10

    为什么左Altr键在Ubuntu中不起作用?

  11. 11

    为什么<?扩展Number>对Integer不起作用?

  12. 12

    为什么is_integer()方法不起作用?

  13. 13

    为什么ArrayList <Integer>包含不起作用?

  14. 14

    为什么不起作用?

  15. 15

    在C语言中将#define值用作函数参数-为什么起作用?

  16. 16

    为什么`Integer('009')`不起作用,而`Float('009')`起作用?

  17. 17

    Pymongo $ in查询不起作用

  18. 18

    为什么在Cython中将列表转换为集合不起作用?

  19. 19

    为什么有时某些键盘键不起作用,而另一些时候却起作用?

  20. 20

    为什么@JoinTable上的JPA(休眠)外键定义不起作用?

  21. 21

    从案例类中提取Map键类型时为什么不起作用?

  22. 22

    为什么快捷键在rubymine IDE中不起作用

  23. 23

    为什么我的代码不起作用?-setObjectForKey:键不能为零

  24. 24

    为什么我的代码不起作用?-setObjectForKey:键不能为零

  25. 25

    为什么配置键“ quarkus.servlet.context-path”不起作用

  26. 26

    为什么箭头键在Microsoft Excel中不起作用?

  27. 27

    为什么键盘快捷键在Google Chrome浏览器中不起作用?

  28. 28

    为什么这个键重映射在Vim中不起作用?

  29. 29

    为什么Vim中的映射键在netrw中不起作用?

热门标签

归档