二进制 Javascript 对象表示法 (BSON) 是 JSON 文档的二进制编码序列化。JSON 更易于理解,因为它是人类可读的,但与 BSON 相比,它支持的数据类型更少。BSON 已扩展为添加一些可选的非 JSON 原生数据类型,例如日期和二进制数据。
MongoDB 在内部和网络上都以 BSON 格式存储数据。它也是用于 mongodump 生成的输出文件的格式。要阅读 BSON 文档的内容,您必须将其转换为人类可读的格式,如 JSON。
通过这篇文章,您将了解如何将 BSON 文档转换为 JSON。我将解释的一些方法包括使用 bsondump、mongoexport、Python 和 Bash。
使用 bsondump 将 BSON 转换为 JSON
bsondump将BSON文件转换为人类可读的格式,包括JSON。例如, bsondump 可用于读取mongodump生成的输出文件。bsondump 工具是MongoDB 数据库工具包的一部分。
bsondump
从系统命令行运行:
bsondump --outFile=collection.json collection.bson
它将collection.json
从现有的 BSON 文档 ( ) 创建一个 JSON 文件 ( collection.bson
),就像备份数据库后创建的文件一样。
使用 mongoexport 将 BSON 转换为 JSON
mongoexport是一个命令行工具,可以生成存储在 MongoDB 实例中的数据的 JSON 或 CSV 导出。mongoexport 工具是MongoDB 数据库工具包的一部分。
mongoexport
从命令行运行:
mongoexport --collection=employees --db=company --out=employees.json --pretty
要连接到在端口 27017 上运行的本地 MongoDB 实例,您不必指定主机或端口。如果需要,请查看文档中的连接到 MongoDB 实例部分以获取更多信息。
该--pretty
选项将很好地格式化 JSON 文件的内容。
使用 Python 将 BSON 转换为 JSON
如果您是 Python 开发人员,有两种方法可以读取 BSON 文档并将其转换为 JSON。
- 使用PyMongo
bson
中的模块
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 文件,并写入从 BSON 文件的数据创建的 JSON 文档
该脚本适用于 mongodump 生成的 BSON 文件。在运行脚本之前,您必须安装 PyMongo:pip install pymongo
。
- 连接到数据库并使用 PyMongo(MongoDB 的 Python 驱动程序)查询数据。
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
方法,从bson
模块导入dumps
方法 - 建立与数据库的连接
- 设置要查询的数据库(例如,
company
)和集合(例如,employees
) - 使用
find()
方法检索集合中的文档,并使用结果创建一个列表。如果您不向此方法传递任何参数,结果将类似于 MySQL 中的“SELECT *” - 通过调用 dumps 方法创建一个 JSON 对象。
indent = 2
参数将告诉dumps()
漂亮地格式化 JSON 对象 - 将
json_data
变量的内容写入data.json
文件
在运行脚本之前,您必须安装 PyMongo:pip install pymongo
。
使用 Bash 将 BSON 转换为 JSON
创建一个 Bash 脚本。
代码语言:javascript复制#!/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
.
运行脚本
- 给脚本添加执行权限:
chmod x bson_to_json.sh
- 在命令行中执行此命令:
./bson_to_json.sh
结论
如果要读取 BSON 文档的内容,可以使用 bsondump 和 mongoexport 将 BSON 文档转换为人类可读的格式,如 JSON。这些工具是MongoDB 数据库工具的一部分。
如果您是一名代码开发人员,您可以使用所选编程语言的 MongoDB 驱动程序并查询数据以分析数据库中集合的内容。对于Python,可以安装PyMongo,连接数据库,查询数据,使用bson模块将内容保存为JSON文档。
还有其他解决方案,例如其他编程语言提供的在线工具和方法,在此处就不做过多的讲解了。