当前位置: 首页 > 知识库问答 >
问题:

如何使用pymongo将集合转储到json文件

史默
2023-03-14

我正在尝试将收藏转储到。json文件,但在看过pymongo教程后,我找不到任何与之相关的东西。

教程链接:https://api.mongodb.com/python/current/tutorial.html

共有3个答案

柯唯
2023-03-14

接受的解决方案生成无效的JSON。它的结果是在右方括号]之前尾随逗号。JSON规范不允许尾随逗号。请参阅此答案和此参考资料。

为了基于公认的解决方案,我使用了以下方法:

from bson.json_util import dumps
from pymongo import MongoClient
import json

if __name__ == '__main__':
    client = MongoClient()
    db = client.db_name
    collection = db.collection_name
    cursor = collection.find({})
    with open('collection.json', 'w') as file:
        json.dump(json.loads(dumps(cursor)), file)
孟自强
2023-03-14

下面是另一种不在结束方括号前保存的方法。同时使用打开的来节省一些空间。

filter = {"type": "something"}
type_documents = db['cluster'].find(filter)
type_documents_count = db['cluster'].count_documents(filter)

with open("type_documents.json", "w") as file:
    file.write('[')
    # Start from one as type_documents_count also starts from 1.
    for i, document in enumerate(type_documents, 1):
        file.write(json.dumps(document, default=str))
        if i != type_documents_count:
            file.write(',')
    file.write(']')

如果迭代次数等于文档数(它保存的最后一个文档),它基本上不会写逗号。

秦雅逸
2023-03-14

只需获取所有文档并将其保存到文件中,例如:

from bson.json_util import dumps
from pymongo import MongoClient

if __name__ == '__main__':
    client = MongoClient()
    db = client.db_name
    collection = db.collection_name
    cursor = collection.find({})
    with open('collection.json', 'w') as file:
        file.write('[')
        for document in cursor:
            file.write(dumps(document))
            file.write(',')
        file.write(']')
 类似资料:
  • 我有一个这样的口述: 我不知道如何将dict转储到JSON文件中,如下所示: 有没有一种pythonic的方法来实现这一点? 您可能会猜测我想生成一个树映射。

  • 我有一个“异常”的json文件。 像这样的文件体 我已经尝试了很多方法来导入这个到mongo通过pymongo,但我不能加载文件体与json加载器或bson加载器。我知道这不是一个普通的json或bson文件。 但我使用mongoimport将此文件成功导入mongodb。 有人知道如何解决这个问题并让它发挥作用吗?我怎么能导入这个文件到mongoDB使用pymongo?

  • 我想将废弃的数据转储到json文件中。我相信它的格式已经很好了(dictionary、list、string等)。我如何输出到json文件中?

  • 问题内容: 我正在尝试使用pymongo模块从URL中提取一个JSON文件并将其按原样发送到mongoDB。 我有以下代码 执行此操作后,出现此错误,引发TypeError(“ documents must be a non-empty list”)TypeError:文档必须为非空列表 理想情况下,我希望能够从url中提取json并更新mongoDB,因为此json文件每周都会更新。谢谢 问题答

  • 我知道这是一个相当普遍的问题。我正在编写一个小的Flask应用程序,并试图将一些查询反馈给视图。我已经连接到我的本地MongoDB设置,并进行了成功的查询——但我无法使用它生成json对象 我见过的最常见的解决方案是从pymongo导入json_util,即。 我已经安装pymongo到我的烧瓶虚拟环境使用pip i. e: 在运行上述代码时,我不断遇到以下错误: 我可以在pymongo-2.3-

  • 我想使用@RunFor(Parameterized.class)和 实际的测试数据应由业务人员通过Excel创建。 是否有一种简单/通用的方法可以将Apache POI XSSFSheet获取到指定的字符串数组集合? 如果是:有人能提供一个例子吗? 我发现了这个问题:使用Apache POI在TestNG中进行Datadriven测试---但我希望是一种3线测试;-)