我对 Mongo 完全陌生,大约一周前第一次使用它。在过去的几个月里,我一直在开发一个生成复杂 JSON 对象的应用程序。最初的意图是将它们存储在 Mongo 中,现在是实现 CRUD 的时候了。
在开发过程中,我将应用程序设置为从控制器中的静态数组中读取 JSON(CodeIgniter 2.1)。这工作得很好;我使用 Mongo shell 导入了它们,并且所有内容的结构都正确。
每个文档都是一个对象;对象具有对象、对象数组等属性。Mongo 将它的 _id 对象插入到我的文档中,我完全没问题。
但是 PHP 拒绝将我的文档作为对象返回;它给了我数组。事实上,文档中的每个对象都以数组的形式返回,在每个深度。
防止这种不需要的类型转换行为似乎应该是微不足道的,但是如何呢? 我找不到任何关于如何做的参考。
此外,从第 7 级深度开始的数据(恰好是 [document object].[array].[object].[object].[object].[array]. [object])被省略了。
最初我们认为这发生在 CodeIgniter、ActiveRecord 或 cimongo 库的某个地方,但今天我直接使用 MongoDB 扩展得到了同样错误的文档结构。
Web 服务器正在运行 Debian Squeeze、PHP 5.3.3-7+squeeze15、MongoDB PHP 扩展版本 1.2.12。当我登录时,运行 Mongo 的主机告诉我“MongoDB shell 版本:2.4.5”。