MongoDB:如何将 BSON 文档转换为可读的格式

二进制 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。

  1. 使用PyMongobson中的模块

``` from bson import decodeall from bson.jsonutil 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_alldumps 方法
  2. 打开文件读取内容并解码数据
  3. 创建一个 JSON 文件,并写入从 BSON 文件的数据创建的 JSON 文档

该脚本适用于 mongodump 生成的 BSON 文件。在运行脚本之前,您必须安装 PyMongo:pip install pymongo

  1. 连接到数据库并使用 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)

jsondata = dumps(listcur, indent = 2)

with open('data.json', 'w') as file:     file.write(json_data) ```

这就是脚本正在做的事情:

  1. pymongo 库导入 MongoClient 方法,从 bson 模块导入 dumps 方法
  2. 建立与数据库的连接
  3. 设置要查询的数据库(例如,company)和集合(例如,employees)
  4. 使用 find() 方法检索集合中的文档,并使用结果创建一个列表。如果您不向此方法传递任何参数,结果将类似于 MySQL 中的“SELECT *”
  5. 通过调用 dumps 方法创建一个 JSON 对象。indent = 2 参数将告诉 dumps() 漂亮地格式化 JSON 对象
  6. json_data 变量的内容写入 data.json 文件

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

使用 Bash 将 BSON 转换为 JSON

创建一个 Bash 脚本。

```

!/bin/bash

declare -a bsonfiles bsonfiles=( $(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 数据库工具的一部分。

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

还有其他解决方案,例如其他编程语言提供的在线工具和方法,在此处就不做过多的讲解了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在使用Java将JSON文档数组插入MongoDB时,你需要使用BSON工具将JSON转换BSON格式。以下是一个示例代码,可以将JSON数组插入到MongoDB中: ``` import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import org.bson.conversions.Bson; import org.bson.types.ObjectId; import java.util.ArrayList; import java.util.List; public class MongoDBTest { public static void main(String[] args) { // 创建MongoDB连接 MongoClient client = new MongoClient("localhost", 27017); // 获取MongoDB数据库 MongoDatabase database = client.getDatabase("test"); // 获取MongoDB集合 MongoCollection<Document> collection = database.getCollection("users"); // 创建JSON数组 String json = "[{ \"name\" : \"Tom\", \"age\" : 20 },{ \"name\" : \"Jerry\", \"age\" : 25 }]"; // 将JSON数组转换BSON文档列表 List<Document> documents = new ArrayList<>(); JsonParser parser = new JsonParser(); JsonArray jsonArray = parser.parse(json).getAsJsonArray(); for (JsonElement jsonElement : jsonArray) { Document document = Document.parse(jsonElement.toString()); documents.add(document); } // 插入BSON文档列表到MongoDB集合 collection.insertMany(documents); // 关闭MongoDB连接 client.close(); } } ``` 在这个示例中,我们使用了JsonParser将JSON字符串转换为JsonArray,然后遍历JsonArray,将每个元素转换BSON文档,并将文档添加到BSON文档列表中。最后,我们使用insertMany方法将BSON文档列表插入到MongoDB集合中。注意,在使用BSON工具时,需要注意BSON格式与JSON格式的差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youtian.L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值