代码改变世界

MongoDB-如何将BSON文档转换为人类可读的格式

  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

 

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示