使用 PHP 从 MongoDB 中检索空对象而没有空数组 限制

问题描述

问题

Mongo 中的空对象在 PHP 中被解码为空数组。这导致了一个问题,在我执行 json_encode($data) 之后,json 中应该是 {} 的值被编码为 []

配置

图像你有一个像这样映射到 Mongo 的文档:

/**
 * @MongoDB\EmbeddedDocument()
 */
class RandomForm
{
    /**
     * @var mixed
     * @MongoDB\Field(type="raw")
     */
    private $content;
}

为什么?前端绘制“随机”表单(它知道其他来源的表单应该是什么样子)并希望保存数据。为此,前端只需将 JSON 发送到后端。当前端要求数据时,它希望将其取回。无论出于何种原因,我们都希望通过数据库中的随机字段进行搜索。 除非前端向我们发送空对象,否则它工作得很好,该对象作为空 Object 存储到 Mongo,但 PHP 发挥了作用并将其转换为空 Array

有什么办法可以让 Mongo 保持原始数据类型(对象或数组)?

限制

您不能将所有空数组都转换为对象 (\stdClass()),因为有时它仍然应该是空数组。

Mongo 人说他们不会在驱动程序中修复它:https://jira.mongodb.org/browse/PHP-550

有什么办法可以绕过这种行为吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)