如何使用PHP从MongoDB获取原始BSON;mongodb“;延伸
我试图使用PHP从mongodb获取二进制BSON字符串,但我不知道如何将文档获取为BSON。它总是首先将其解析为PHP对象 我试图在游标上设置一个如何使用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([]);
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对其进行反序列化