python 导入 json 文件到 MongoDB 中
Posted smile-yan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 导入 json 文件到 MongoDB 中相关的知识,希望对你有一定的参考价值。
问题描述
当前有一个 json 文本文件,包括结构和数据,希望通过 python 导入到 mongoDB 中。
数据准备
根据自己的需要填写 json 文件,也可以考虑使用好用的可视化工具进行编写,这里推荐使用的是 PlistEdit
,因为平时用得少也没有去寻找与比较这类软件,有推荐的小伙伴可以在后面留言,感谢 !
写完后导出为一个 json 文本文件。
对应的文本内容:
"id": 1234,
"phone": "123123123",
"habbits": [
"chess",
"basketball"
]
python 源码
内容比较简单,需要注意的是,这里直接把文件名作为mongoDB的集合名,源码如下:
"""
读 json 文件,写入 Mongo 中
并把json文件的文件名作为集合名
"""
import json
import os
from typing import List
from pymongo import MongoClient
class ImportJsonFileToMongo:
"""将json文件数据导入mongo中并把json文件的文件名作为集合名"""
def __init__(self, uri: str, database: str, filename_with_path: str, max_pool_size: int = 1000):
"""
初始化mongodb客户端连接(连接到指定数据库)
Args:
uri: str mongodb uri,如mongodb://mongo:yan@monngo.smileyan.cn:8017
database: 数据库名 如aiops
max_pool_size: 最大连接池
"""
self.client = MongoClient(uri, maxPoolSize=max_pool_size)
self.database = database
self.file = filename_with_path
def read_json_file(self) -> tuple:
"""读取json文件,返回list[dict]和文件名"""
# `-5` 是指文件后缀 `.json` 字符长度
filename = os.path.basename(self.file)[-5]
with open(self.file, "r") as json_file:
records = json.load(json_file)
dicts: List[dict] = records['RECORDS']
return filename, dicts
def import_one_file_data(self, ordered: bool = False):
"""将filename作为集合名,写入dicts数据
Args:
ordered: 是否按顺序插入
"""
filename, dicts = self.read_json_file()
self.client.get_database(self.database).get_collection(filename).insert_many(dicts, ordered=ordered)
if __name__ == '__main__':
FILE = 'data/test.json'
URI = 'mongodb://mongo:yan@mongo.smileyan.cn:8017'
DATABASE = 'yan_test'
ImportJsonFileToMongo(URI, DATABASE, filename_with_path=FILE).import_one_file_data()
需要注意 URI
FILE
以及 DATABASE
的编写需要根据实际情况而定。
更多python 管理 mongoDB推荐参考 MongoDB的基本用法
总结
这种工具性质的源码没有多少亮点,但是如果能够帮助大家节省一些时间,排得上用场的话,请务必点个赞,感谢!
Smileyan
2021.10.21 13:44
以上是关于python 导入 json 文件到 MongoDB 中的主要内容,如果未能解决你的问题,请参考以下文章