用go和mgo读取mongodump输出

Nic*_*ets 5 go mongodb mgo

我正在尝试读取mongodump生成的集合转储.该文件是几千兆字节,所以我想逐步读取它.

我可以用这样的东西读取第一个对象:

buf := make([]byte, 100000)
f, _ := os.Open(path)
f.Read(buf)

var m bson.M
bson.Unmarshal(buf, &m)
Run Code Online (Sandbox Code Playgroud)

但是我不知道消耗了多少buf,所以我不知道如何阅读下一个.

这可能与mgo有关吗?

Nic*_*ets 2

我设法用以下代码解决了这个问题:

for len(buf) > 0 {
    var r bson.Raw
    var m userObject

    bson.Unmarshal(buf, &r)
    r.Unmarshal(&m)

    fmt.Println(m)

    buf = buf[len(r.Data):]
}
Run Code Online (Sandbox Code Playgroud)