skynet 集成了 mongo 的 driver 详见 mongo.lua 支持以下接口:

mongo_collection:insert,

mongo_collection:update,

mongo_collection:delete,

mongo_collection:find,

mongo_collection:findAndModify,

mongo_collection:createIndex,

mongo_collection:dropIndex,

mongo_cursor:next,

mongo_cursor:sort,

mongo_cursor:skip,

mongo_cursor:limit,

mongo_cursor:count,

mongo_client:runCommand …

以上接口会返回 bson.decode 的结果, 对于返回需要获得某字段的类型时,使用 bson.type 会更严谨。bson.type 会返回两个值,第一个是数据的类型,第二个是数据本身, 特别的,为了区分 bson 的 null 与 lua 层的 nil,bson.type 在检查到数据类型为 TNIL 时,数据类型返回为”nil”,数据本身返回 nil, 当检查到数据类型为 bson 的 null 时,数据类型返回为”nil”,数据本身返回一个特殊的字符串。 若只是想比较 bson 的某个字段是否为 bson 的 null,则可以直接与 bson.null 进行比较 (如在检查 findAndModify 的结果时,检查是否找到并修改了数据,可以检查返回值的 value 字段与 bson.null 是否相等)。 mongo.lua 里面已经封装了bson.decode 和 bson.encode mongo 接口使用 参考

mongo 服务示例 参考