如何使用PHP从MongoDB获取原始BSON;mongodb“;延伸

如何使用PHP从MongoDB获取原始BSON;mongodb“;延伸,php,mongodb,bson,Php,Mongodb,Bson,我试图使用PHP从mongodb获取二进制BSON字符串,但我不知道如何将文档获取为BSON。它总是首先将其解析为PHP对象 我试图在游标上设置一个typeMap,但所做的只是将已解析的PHP对象传递给类中的bsonSerialize($object)函数 代码如下所示: <?php $db = new \MongoDB\Driver\Manager('mongodb://localhost/test'); $query = new \MongoDB\Driver\Query([]);

我试图使用PHP从mongodb获取二进制BSON字符串,但我不知道如何将文档获取为BSON。它总是首先将其解析为PHP对象

我试图在游标上设置一个
typeMap
,但所做的只是将已解析的PHP对象传递给类中的
bsonSerialize($object)
函数

代码如下所示:

<?php

$db = new \MongoDB\Driver\Manager('mongodb://localhost/test');
$query = new \MongoDB\Driver\Query([]);
$cursor = $db->executeQuery("test.contacts", $query);

foreach($cursor as $document) {
    // $document is already parsed to a PHP stdObject
}

在最近的MongoDB版本(自3.6版起)中,文档作为响应的一部分返回,整个响应被序列化为BSON。这意味着,当驱动程序收到响应时,必须对整个响应进行BSON反序列化,然后将部分响应作为已找到的文档提供给应用程序

驱动程序不会将文档单独序列化为BSON


因此,如果您需要将单个文档序列化为BSON,那么您需要自己完成这项工作。

在最近的MongoDB版本(自3.6版起)中,文档将作为响应的一部分返回,而整个响应将序列化为BSON。这意味着,当驱动程序收到响应时,必须对整个响应进行BSON反序列化,然后将部分响应作为已找到的文档提供给应用程序

驱动程序不会将文档单独序列化为BSON


因此,如果您需要将单个文档序列化为BSON,您需要自己完成。

这很有意义,我会接受将整个响应序列化为BSON,但PHP驱动程序似乎总是返回一个
MongoDB\driver\Cursor
对象,并且没有办法获得原始响应?您打算如何处理原始响应?将其直接传递到
MongoDB\BSON\toJSON
中,看看这是否有超过1000的性能提升文件。首先跳过内部
MongoDB\BSON\toPHP
转换(看起来像什么)。好吧,假设您这样做,以后打算如何处理json序列化的原始响应?我通过HTTP将其发送到浏览器,并使用Javascript对其进行反序列化,这很有意义,我会接受将整个响应序列化为BSON,但PHP驱动程序似乎总是返回一个
MongoDB\driver\Cursor
对象,并且没有办法获得原始响应?您打算如何处理原始响应?将其直接传递到
MongoDB\BSON\toJSON
中,看看这是否有超过1000的性能提升文件。首先跳过内部
MongoDB\BSON\toPHP
转换(看起来像什么)。好吧,假设您这样做,您打算稍后如何处理json序列化的原始响应?我通过HTTP将其发送到浏览器,并使用javascript对其进行反序列化