使用 java 查看 .bson 文件的内容

Mas*_*oud 1 java parsing mongodb bson

我有一个非常大的.bson文件。

现在我有两个问题:

  1. 我怎样才能看到那个文件的内容?(我知道它可以用"bsondump"做,但是这个命令很慢,特别适用于大型数据库)(实际上我想看看那个文件的结构)

  2. 如何使用java查看该文件的内容?

hel*_*lmy 5

您可以使用或BSONDecoder等实例轻松读取/解析 Java 中的 bson 文件。这些类包含在 mongo-java-driver 中。BasicBSONDecoderDefaultBSONDecoder

下面是一个 Java 实现的简单示例bsondump

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import org.bson.BSONDecoder;
import org.bson.BSONObject;
import org.bson.BasicBSONDecoder;



public class BsonDump {

    public void bsonDump(String filename) throws FileNotFoundException {
        File file = new File(filename);
        InputStream inputStream = new BufferedInputStream(new FileInputStream(file));

        BSONDecoder decoder = new BasicBSONDecoder();
        int count = 0;
        try {
            while (inputStream.available() > 0) {

                BSONObject obj = decoder.readObject(inputStream);
                if(obj == null){
                    break;
                }
                System.out.println(obj);
                count++;

            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                inputStream.close();
            } catch (IOException e) {
            }
        }
        System.err.println(String.format("%s objects read", count));
    }

    public static void main(String args[]) throws Exception {

        if (args.length < 1) {
            //TODO usage
            throw new IllegalArgumentException("Expected <bson filename> argument");
        }
        String filename = args[0];
        BsonDump bsonDump = new BsonDump();
        bsonDump.bsonDump(filename);

    }

}
Run Code Online (Sandbox Code Playgroud)