首页 > 解决方案 > 如何使用 PHP“mongodb”扩展从 MongoDB 获取原始 BSON

问题描述

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

我试图typeMap在光标上设置 a ,但这只是将已经解析的 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
}

标签: phpmongodbbson

解决方案


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

驱动程序没有一刻将文档单独序列化为 BSON。

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


推荐阅读