MongoDB-如何将BSON文档转换为人类可读的格式
2023-04-04 13:19 abce 阅读(649) 评论(0) 编辑 收藏 举报二进制Javascript对象表示法(BSON)是一种以二进制编码串行化的JSON文档。JSON更容易理解,因为它是人类可读的,但与BSON相比,它支持的数据类型更少。
BSON已经被扩展,可以添加一些可选的非json原生数据类型,比如日期和二进制数据。MongoDB在内部和网络上以BSON格式存储数据。mongodump生成的输出文件使用的格式就是BSON。
要读取BSON文档的内容,必须将其转换为人类可读的格式,如JSON。
bsondump将bson转换成json
bsondump将bson转换成人类可读的格式,包括json格式。例如,bsondump就是用来读取mongodump备份文件的很好的工具。bsondump是mongodb的工具包的一部分。
运行bsondump:
1 | bsondump --outFile=collection.json collection.bson |
该命令会从当前的bson文件collection.bson创建一个json文件(collection.json)。
mongoexport将bson转换成json
mongoexport是一个命令行工具,会生成csv、或json格式数据。
1 | mongoexport --collection=employees --db=company --out=employees.json --pretty |
python将bson转换成json
如果你是python开发人员,有两种方式可以将bson转换成json。
1.使用PyMongo的bson模块
1 2 3 4 5 6 7 8 | from bson import decode_all from bson.json_util import dumps with open ( './data.bson' , 'rb' ) as f: data = decode_all(f. read ()) with open ( "./data.json" , "w" ) as outfile: outfile.write(dumps(data, indent=2)) |
这里:
·从bson模块导入方法decode_all和dumps
·打开文件读取内容并解码数据
·创建一个json文件并写入json数据
这个脚本可以应用与mongodump的文件。
2.使用PyMongo连接数据库并查询数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from pymongo import MongoClient from bson.json_util import dumps uri = "mongodb://username:password@host:port/" client = MongoClient(uri) db = client.company employees = db.employees cursor = employees.find() list_cur = list( cursor ) json_data = dumps(list_cur, indent = 2) with open ( 'data.json' , 'w' ) as file: file.write(json_data) |
这里:
·导入pymongo库的MongoClient和dump方法
·与数据库建立连接
·设置你要查询的数据库和集合
·使用find()检索文档,不带任何参数的话,相当于SELECT * in MySQL
·调用dumps方法创建json对象,参数indent = 2会告诉dump()方法prettyjson对象
·将json_data数据写入data.json文件
Bash将bson转换成json
1 2 3 4 5 6 7 8 | #!/bin/bash declare -a bson_files bson_files=( $(ls -d $PWD/*.bson) ) for file in "${bson_files[@]}" ; do bsondump $file --outFile=$file.json done |
这里:
列出当前目录下的所有bson文件,将结果保存到一个数组,然后循环数组将bson文件转换成json文件。脚本使用到了工具bsondump
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)