MongoDB:如何将BSON文档转换为人类可读格式
#python #bash #mongodb

二进制JavaScript对象符号(BSON)是JSON文档的Binâary-En编码的SerialâizAtion。 JSON更容易理解,因为它是可读的,但是与BSON相比,它支持更少的数据类型。 BSON已扩展以添加一些可选的非JSON本地数据类型,例如日期和二进制数据。

mongoDB以内部和网络上的bson格式存储数据。它也是MongoDump生成的输出文件的格式。要阅读BSON文档的内容,您必须将其转换为JSON等人类可读格式。

通过此博客文章,您将学习如何将BSON文档转换为JSON。我将解释的一些方法包括使用Bsondump,Mongoexport,Python和Bash。

Bsondump与JSON的BSON

bsondumpBSON文件转换为人类可读格式,包括JSON。例如,Bsondump对于读取mongodump生成的输出文件很有用。 Bsondump工具是MongoDB Database Tools软件包的一部分。

从系统命令行运行bsondump

bsondump --outFile=collection.json collection.bson

它将从现有的BSON文档(collection.bson)中创建一个JSON文件(collection.json),就像备份数据库后创建的文件一样。

BSON与Mongoexport的JSON

mongoexport是一种命令行工具,可产生存储在mongoDB实例中的数据的JSON或CSV导出。 Mongoexport工具是MongoDB Database Tools软件包的一部分。

从命令行运行mongoexport

mongoexport --collection=employees --db=company --out=employees.json --pretty

要连接到在端口27017上运行的本地mongoDB实例,您不必指定主机或端口。如果需要,请检查文档中的Connect to a MongoDB Instance部分以获取更多信息。

--pretty选项将优美格式化JSON文件的内容。

与python一起到JSON

如果您是Python开发人员,则有两种方法可以阅读BSON文档并将其转换为JSON。

  1. 使用PyMongobson模块
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))

这是脚本正在做的:

  1. 从bson`模块导入`decode_all`和`dumps'方法
  2. 打开文件以读取内容并解码数据
  3. 创建一个JSON文件,并编写从BSON文件的数据创建的JSON文档

该脚本可与MongoDump生成的BSON文件一起使用。在运行脚本之前,您必须安装pymongo:pip install pymongo

  1. 连接到数据库并使用MongoDB的Python驱动程序Pymongo查询数据。
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)

这是脚本正在做的:

  1. 从pymongo库中导入`mongoclient'方法,从`bson`模块
  2. indumps'方法
  3. 建立与数据库的连接
  4. 设置数据库(例如,`company')和收集(例如``员工'')要查询
  5. 使用``find()方法在集合中检索文档,并与结果创建列表。如果您没有将任何参数传递给此方法,则结果将类似于``select *'in mysql
  6. 通过调用“转储”方法创建JSON对象。 `缩进= 2`参数将告诉`dumps()
  7. 将`json_data“变量的内容”写入`data.json`文件

在运行脚本之前,您必须安装pymongo:pip install pymongo

bson和bash

我在phind.com上要求AI告诉我如何将BSON文件转换为JSON,并且它向我展示的解决方案之一是在BSON文件所在的目录中创建一个bash脚本。

#!/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

运行脚本

  1. 将执行权限添加到脚本:chmod +x bson_to_json.sh
  2. 在命令行中执行此命令:
./bson_to_json.sh

结论

如果您想阅读BSON文档的内容,则可以使用Bsondump和Mongoexport将BSON文档转换为JSON等人类可读格式。这些工具是MongoDB Database Tools的一部分。

如果您是开发人员,则可以使用所选编程语言的mongoDB驱动程序,并查询数据以分析数据库中集合的内容。对于Python,您可以安装Pymongo,连接到数据库,查询数据并使用BSON模块将内容保存为JSON文档。

还有其他解决方案,例如其他编程语言提供的在线工具和方法,但是在这里您学习了一些方法。


MongoDB的Percona分布是一种免费的MongoDB数据库替代方案,为您提供了一个解决方案,该解决方案结合了开源社区中最佳,最重要的企业组件,设计和测试以合作。 < < < /p>

Download Percona Distribution for MongoDB Today!