二进制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
标签:--,MongoDB,json,可读,bsondump,bson,data,BSON From: https://www.cnblogs.com/abclife/p/17286088.html