写了一个 lua bson 库

bson 的官方网站上链接了一个纯 Lua 实现的 bson 库,但是实现的不完整。

我用 C 实现了一个 Lua bson 库。

bson 是为 MongoDB 设计的结构化数据序列化协议,所以有很多设定是为 mongodb 服务的,如果单用于序列化结构化数据,那么那些不一定要实现。但我写这个的最终目的是做一个 lua 的 mongo driver ,所以就实现的比较完整了。

bson 结构中,有一些固定长度的字段,修改它们不必重新编码。这在 mongDB 的通讯协议中非常有用,所以我也加了对应的接口。还有许多特性可能会有用,比如把两个 bson document 连接成一个之类的,等我在写 mongoDB driver 的时候,视情况实现。


2014 : 3 月 12 日补充

因为 mongo 对有些 bson 文档要求 key 的次序, 而 lua 的 table 是无序的。所以增加了 bson.encode_order 按次序打包 document 。