如何从JSON文件仅导入dataTmp字段到MongoDB?
只导入JSON中dataTmp数组到MongoDB的解决方法
因为mongoimport的--fields选项确实对JSON格式文件不生效,这里给你几个可行的方案:
方案一:用jq工具预处理(推荐)
jq是专门处理JSON的命令行工具,能快速提取你需要的字段。直接通过管道把提取后的内容传给mongoimport就行,不用生成临时文件:
jq '.dataTmp' test_mongoDB.json | mongoimport --type json --db local --collection collection_111 --drop
这个命令会先把JSON里的dataTmp数组提取出来,然后让mongoimport把数组里的每个对象作为独立文档导入目标集合。
方案二:用Python脚本处理
如果你的环境里没有jq,用Python写个简单脚本也能搞定:
import json # 读取原JSON文件 with open('test_mongoDB.json', 'r', encoding='utf-8') as f: raw_data = json.load(f) # 提取dataTmp数组 target_data = raw_data['dataTmp'] # 把每个元素按行写入临时文件(mongoimport支持每行一个JSON对象的格式) with open('tmp_import.json', 'w', encoding='utf-8') as f: for item in target_data: json.dump(item, f) f.write('\n') # 执行导入命令(可以直接在脚本里用subprocess调用,也手动执行) # subprocess.run(['mongoimport', '--file', 'tmp_import.json', '--type', 'json', '--db', 'local', '--collection', 'collection_111', '--drop'])
运行脚本后,再执行注释里的mongoimport命令就能完成导入。
方案三:先导入临时集合再迁移
先把整个JSON文件导入到一个临时集合,再通过MongoDB的shell命令把dataTmp里的元素迁移到目标集合:
- 导入整个文件到临时集合:
mongoimport --file "test_mongoDB.json" --type json --db local --collection temp_collection --drop
- 打开MongoDB Shell,执行迁移操作:
use local // 把临时集合里的dataTmp数组元素逐个插入目标集合 db.temp_collection.findOne().dataTmp.forEach(doc => { db.collection_111.insertOne(doc) }) // 删除临时集合 db.temp_collection.drop()
内容的提问来源于stack exchange,提问作者wBB
相关产品推荐
相关产品推荐

