首页 > 数据库 >MongoDB-如何将BSON文档转换为人类可读的格式

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

时间:2023-04-04 13:35:24浏览次数:37  
标签:-- MongoDB json 可读 bsondump bson data BSON

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

相关文章

  • docker 部署mongoDB集群与读写分离
    一.生成key文件需要注意集群中所有机器都需要用同一个文件,否则会出现验证失败的情况#生成keyopensslrand-base64756>/data/volume/mongodb/configdb/mongo.key#设置访问权限chmod400/data/volume/mongodb/configdb/mongo.key 二.启动MongoDB的docker容器d......
  • MongoDB中的Capped Collection
    cappedcollection是固定大小的结合,支持基于插入顺序的插入和检索文档的高吞吐量操作。Cappedcollections的工作方式类似循环buffer:一旦一个集合填满了它分配的空间,它就会通过覆盖集合中最老的文档来为新文档腾出空间。作为cappedcollection的替代方案,可以考虑MongoDB的TTL(Ti......
  • Day 21 21.3 数据库之MongoDB
    MongoDB一般爬虫使用的数据库,是根据项目来定的。如需求方指定了使用什么数据库、如果没指定,那么决定权就在爬虫程序员手里,如果自选的话,mysql和mongodb用的都是比较多的。但不同的数据库品种有各自的优缺点,不同的场景任何一种数据库都可以用来存储,但是某种可能会更好。......
  • Day 21 21.4 数据库之Python操作MongoDB
    PyMongo在这里我们来看一下Python3下MongoDB的存储操作,在本节开始之前请确保你已经安装好了MongoDB并启动了其服务,另外安装好了Python的PyMongo库。安装:pipinstallpymongo添加文档importpymongoclient=pymongo.MongoClient(host='localhost',port=27017)"""......
  • MongoDB 架构
    优质博文:IT-BLOG-CN一、存储数据格式MongoDB作为主流的NoSQL数据库之一,使用面向文档的数据存储方式,将数据以JSON和BSON的方式存储在磁盘中。BSONBinaryJSON是一种基于JSON的二级制序列化格式,用于MongoDB存储文档并进行远程过程调用,作为网络数据交互的一种存储形式,类似于Prot......
  • mongodb--文档查询
    一、简单查询--查询所有文档db.COLLECTION_NAME.find()--将查询结果以json形式显示db.COLLECTION_NAME.find().pretty()二、按条件查询文档db.COLLECTION_NAME.find(query,projection)参数说明:query:可选,projection:可选,查询时返回文档中所有键值,(默认省略)说明:按条件......
  • mongodb-文档的插入、更新与删除操作
    一、文档的插入--单文档插入db.COLLECTION_NAME.insert(document)db.COLLECTION_NAME.insertOne(document)--insert也可以插入多文档db.COLLECTION_NAME.save(document)--insert与save区别--insert方法插入若文档中已存在该文档,会报错,反之写入--save方法插入若集合中已......
  • mongodb--数据库操作与集合操作
    一、数据库操作1、新建数据库和切换数据库useDATABASE_NAME--DATABASE_NAME创建数据库的名字--如果刚创建完数据库,使用查看命令后没有的话,其实因为里面没有数据,所以才看不到2、查看所有数据库--查看所有数据库showdbs--查看当前数据库db 3、删除数据库--删除......
  • spring MongoDB 集成crud操作(简单封装)
    这两天一直在学习mongodb,由于我的博客网站想把mysql替换成mongodb,为什么会有这样的冲动,我通过收集一些资料,关于mongodb跟mysql的对比...发现性能上mongodb比上mysql是高出很多倍...无论是增,删,修,查的操作.....都比mysql效率好...但是,我也看到,mongodb是文档型数据库...做......
  • JAVA封装Mongodb操作之一:MongoRepository
    MongoRepository与HibernateTemplete相似,提供一些基本的方法,实现的方法有findone(),save(),count(),findAll(),findAll(Pageable),delete(),deleteAll(),基本就这几个,但是: 与HibernateRepository类似,通过继承MongoRepository接口,我们可以非常方便地实现对一个对象的增删改查,要使用R......