MongoDB:BSON 到 JSON

Posted

技术标签:

【中文标题】MongoDB:BSON 到 JSON【英文标题】:MongoDB: BSON to JSON 【发布时间】:2012-05-13 10:35:33 【问题描述】:

我正在为 node.js 使用本机 mongoDB 驱动程序。 我想从数据库中获取一些数据并通过 HTTP 将其作为 JSON 字符串发送。 有没有办法将 BSON 转换为 JSON 或直接从数据库中以 JSON 格式检索数据?

谢谢!

【问题讨论】:

请问?在驱动程序将其转换为 JSON 之前,您无法使用这些文档。 collection.find().toArray(function(err, docs) console.log(docs); //Display array of JSON objects ) BSON 是原生的 mongodb 格式。 JSON 是您应该接收的原生对象格式。 您是在问如何将 JSON 对象转换为字符串? 我想每个人都在说,MongoDB 驱动程序返回 JSON 而不是 BSON。 BSON 只是用于存储文档的内部格式。应该不需要任何转换。 原生 MongoDB 驱动程序不返回 JSON,而是返回一个 JS 对象(或数组,取决于查询)。这是完全不同的,因为并非该对象的所有值都可以序列化为 JSON 并正确反序列化(例如,ObjectID、Date 将被转换为 String,而反序列化器无法知道如何构造原始对象) 【参考方案1】:

在python中你可以使用simplejson编码器将bson转成json,如下:

result = db.mycol.find( ....)
json = simplejson.dumps(result)

它将转换所有简单的对象,但会遇到其他问题,例如 datetime 将不起作用。要处理此问题,以下方法可能有效:MongoDB Object Serialized as JSON

【讨论】:

以上是关于MongoDB:BSON 到 JSON的主要内容,如果未能解决你的问题,请参考以下文章

如何解决错误检测到未知的 BSON 类型

来自MongoDB BSON的Jackson ObjectMapper

如何在 MongoDB 中设置缓冲区偏移范围,它不允许在 BSON 对象中上传超过 16MB 的文件?

c++ bson扩展加载失败,使用mongodb访问mongodb时使用纯js版本

运行节点脚本时出错,找不到模块 'mongodb/node_modules/bson'

mongodb集群用户名密码怎么设置