如何将JSON对象外部ID移至内部以适配MongoDB存储?
解决JSON格式转换以适配MongoDB导入需求
你可以用Python轻松完成这个格式转换,核心思路是遍历原始JSON的键值对,将外部的ID移到对象内部作为_id字段,具体步骤和代码如下:
转换逻辑
原始JSON是一个大字典,键为球员ID(字符串类型),值为球员数据对象。我们需要:
- 遍历每个键值对,将字符串ID转为整数(MongoDB支持数字类型的
_id) - 把
_id字段添加到对应的球员数据对象中 - 将所有处理后的对象收集到列表,方便批量导入MongoDB
代码实现
import json from pymongo import MongoClient # 1. 读取原始JSON文件 with open('原始数据.json', 'r', encoding='utf-8') as f: raw_data = json.load(f) # 2. 格式转换 processed_docs = [] for id_str, player_data in raw_data.items(): # 将字符串ID转为整数,添加为_id字段 player_data['_id'] = int(id_str) processed_docs.append(player_data) # 可选:保存处理后的JSON到本地文件 with open('处理后数据.json', 'w', encoding='utf-8') as f: json.dump(processed_docs, f, indent=2, ensure_ascii=False) # 3. 批量导入MongoDB client = MongoClient('mongodb://localhost:27017/') # 替换成你的MongoDB连接地址 db = client['梦幻足球'] # 数据库名 collection = db['球员'] # 集合名 # 插入所有处理后的文档 collection.insert_many(processed_docs)
说明
- 处理后的数据结构是一个列表,每个元素是包含
_id的球员对象,完全符合MongoDB的文档格式要求 - 如果你的ID原本就是数字字符串(比如示例中的"2103"),转成整数类型的
_id更利于MongoDB的查询和索引 - 若不需要保存到本地文件,可以跳过保存步骤,直接将
processed_docs导入MongoDB
内容的提问来源于stack exchange,提问作者DaHokeyPokey
相关产品推荐
相关产品推荐

