Mongo 返回数组的数组而不是对象

Mongo returning array of arrays instead of objects

我有以下问题。我刚刚在我的 aws 帐户中创建了一个具有相同版本的新 mongodb 实例,但来自我的 php 查询的结果以不同的方式出现。

以前我获取的是对象数组,现在我获取的是数组和数组。
例如:

之前:

array(1) {
  [0] =>
  class stdClass#401 (6) {
    public $_id =>
    class MongoDB\BSON\ObjectId#390 (1) {
      public $oid =>
      string(24) "5a685fa82fdc5d031e25451c"
    }
  }
}

现在:

array(1) {
  [0]=>
  object(stdClass)#393 (6) {
    ["_id"]=>
    object(MongoDB\BSON\ObjectId)#390 (1) {
      ["oid"]=>
      string(24) "5a685fa82fdc5d031e25451c"
    }
  }
}

之前我曾经使用箭头从 php 访问我的变量:

$document->_id;

但现在,在以这种方式获得结果后,我需要将所有内容更改为:

$document['_id'];

是否有任何设置(php/mongo 服务器)以便我可以像以前一样获得结果?

我使用 php mongo 驱动程序来查询我的数据库 - 例如:

$query = new Query($filter, $options);
/** @var MongoDB\Driver\Manager $manager */
return $manager->executeQuery($collection,$query)->toArray();

谢谢

在游标中,您可以指定 returns 如何使用 setTypemap 结果。我认为 ['document' => 'stdClass'] 可以解决问题:

$query = new Query($filter, $options);
/** @var MongoDB\Driver\Manager $manager */
$cursor = $manager->executeQuery($collection, $query);
$cursor->setTypeMap(['document' => 'stdClass']);
return $cursor->toArray();

$cursor->setTypeMap(['root' => 'array', 'document' => 'array', 'array' => 'array' ]);