BSON(Binary JSON)是一种二进制方式存储JSON的格式。MongoDB使用BSON这种结构来存储数据和网络交换。MongoDB的mongodump工具导出的数据格式也是BSON。Java要如何读取BSON文件呢?

MongoDB的Java driver自带了序列化和反序列化功能。

1
2
3
4
5
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.4.2</version>
</dependency>

使用BSONDecoder可以直接解析BSON流:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void main(String[] args) throws IOException {
File file = new File("D:\\mongo导出\\test\\xx.bson");

BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file));
BSONDecoder bsonDecoder = new BasicBSONDecoder();
int count = 0;
while (inputStream.available() > 0) {
BSONObject bsonObject = bsonDecoder.readObject(inputStream);
if (bsonObject == null) break;

System.out.println(bsonObject.get("_id"));
count++;
}

System.out.println(count);
}

参考资料