如何迭代目录中的JSON文件并上传到mongodb

2024-05-17 03:42:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大约500个JSON文件夹。需要上传所有的本地数据库。我尝试使用mongocompass,但Compass一次只能上传一个文件。在python中,我试图编写一些简单的代码来遍历文件夹并逐个上传,但是遇到了一些问题。首先,JSON文件不是逗号分隔的,而是行分隔的。所以文件看起来像:

{ some JSON object }
{ some JSON object }
...

我编写了以下代码来遍历文件夹并将其上载:

^{pr2}$

代码基本上是遍历一个文件夹,检查它是否是.json文件,然后将其插入数据库。这就是应该发生的事。但是,我得到一个错误:

TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping

我似乎无法通过python上传它。我尝试了代码的多个变体,但是由于某些原因python不接受json文件。 这些文件的问题似乎是python只允许逗号分隔的JSON文件。 我怎样才能修复这个问题来上传所有的文件?在


Tags: 文件代码文件夹数据库jsoncompassobject错误
1条回答
网友
1楼 · 发布于 2024-05-17 03:42:49

你正在将文件名插入mongo。不是文件的内容。

假设在一个目录中有多个json文件,其中每个文件的每一行都包含一个json对象。。。

你需要浏览所有的文件,过滤它们,打开它们,逐行读它们,把每一行解析成一个dict,然后插入。如下所示:

os.chdir(directory)
for file in os.listdir(directory):
    if file.endswith(".json"):
        with open(file) as f:
             for line in f:
                 mongo_obj = json.loads(line)
                 mycol.insert(mongo_obj)

我首先做了一个chdir,以避免将整个路径传递给open

相关问题 更多 >