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' ]);
我有以下问题。我刚刚在我的 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' ]);