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

发布时间 2023-04-04 13:25:41作者: abce

二进制Javascript对象表示法(BSON)是一种以二进制编码串行化的JSON文档。JSON更容易理解,因为它是人类可读的,但与BSON相比,它支持的数据类型更少。

BSON已经被扩展,可以添加一些可选的非json原生数据类型,比如日期和二进制数据。MongoDB在内部和网络上以BSON格式存储数据。mongodump生成的输出文件使用的格式就是BSON。

要读取BSON文档的内容,必须将其转换为人类可读的格式,如JSON。

bsondump将bson转换成json

bsondump将bson转换成人类可读的格式,包括json格式。例如,bsondump就是用来读取mongodump备份文件的很好的工具。bsondump是mongodb的工具包的一部分。

运行bsondump:

bsondump --outFile=collection.json collection.bson

该命令会从当前的bson文件collection.bson创建一个json文件(collection.json)。

mongoexport将bson转换成json

mongoexport是一个命令行工具,会生成csv、或json格式数据。

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

​python将bson转换成json

如果你是python开发人员,有两种方式可以将bson转换成json。

1.使用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文件并写入json数据

这个脚本可以应用与mongodump的文件。

2.使用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)

这里:

·导入pymongo库的MongoClient和dump方法

·与数据库建立连接

·设置你要查询的数据库和集合

·使用find()检索文档,不带任何参数的话,相当于SELECT *  in MySQL

·调用dumps方法创建json对象,参数indent = 2会告诉dump()方法prettyjson对象

·将json_data数据写入data.json文件

Bash将bson转换成json

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