I recently wanted to learn the mongo wire protocol so I could better understand how to optimize my queries. I'm not a huge fan of Mongo, but they do a few things well. Additionally, I wanted something that would eventually work with GObject Introspection so I have the same API in multiple languages.

Therefore, I started writing one. It takes a different approach than most of the drivers out there. Primarily, it uses the asynchronous model introduced in GIO. This of course adds some extra complexity, but allows you to pipeline some packets together which can be useful.

Additionally, there is a MongoBsonStream object that is useful for reading through a file that contains a stream of BSON documents sequentially. This is the wire format for mongodump. Therefore, if you want to do offline jobs against your mongo backups, this can be quite useful. I in fact use it to verify the BSON schema of our database offline, after backups have occurred.

I don't know what will end up happening with it, but here it is.


-- Christian Hergert 2012-05-09

Back to Index