python-3.x - 将带有数字键的数据插入 mongodb 时出错(python 字典中的 GPS 数据)
问题描述
我正在尝试将一些图像元数据存储到MongoDB
使用pymongo
. 但是插入时出现错误。
#Data in Dictionary
gps = {'GPSInfo': {1: 'N', 2: ((38, 1), (54, 1), (3540, 100)), 3: 'E', 4: ((1, 1), (26, 1), (1920, 100)), 5: b'\x00', 6: (0, 1), 7: ((11, 1), (7, 1), (47, 1)), 16: 'T', 17: (5338, 65), 29: '2011:09:04'}}
import pymongo
mng_client = pymongo.MongoClient('localhost', 27017)
mng_db = mng_client['pic_db']
collection_name = 'pic_audit_log2'
db_cm = mng_db[collection_name]
# Insert data from a dictionary
db_cm.remove()
db_cm.insert(gps)
错误
InvalidDocument: documents must have only string keys, key was 1
我是否必须将所有数字字典键更改为字符串?当我这样做时它会起作用。
d = {str(a):{str(c):d for c,d in b.items()} if isinstance(b,dict) else b for a,b in gps.items()}
# Insert data from dictionary
db_cm.remove()
db_cm.insert(d)
还有其他更好的选择吗?
解决方案
mongo shell 会在插入数据时将整数转换为字符串,但 pymongo 不会。您的解决方法可能与任何解决方法一样好。
推荐阅读
- php - Google Calendar API 服务帐户错误
- c# - 将 Excel 电子表格转换为带有属性的 XML
- javascript - 如何同步外部异步 javascript 下载
- android - Android:如何 100% 地从 Firebase 实时数据库获取一次性新鲜数据?
- javascript - 具有短路评估的对象解构
- javascript - 当有一张幻灯片时,Swiper js 显示 3 张相同的幻灯片
- asp.net - 如何在本地 IIS 中部署 WebAPI 项目
- python - Cython 遍历数组和索引仍然很慢
- r - cumsum() 从最后一个条目开始并向后移动
- angular - 本机脚本。检查是否启用了 android 设置