正确解析Mongo游标到PHP

use*_*824 6 php cursor mongodb bson

将MongoCursor转换为PHP时,我使用此脚本.这是在StackOverflow SO中提出的

使用upper方法,结构相同,但_id是使用较低的脚本,产生下面包含的结果.

不幸的是,这导致实际对象嵌入到具有Mongo的_id的数组中.像这样 :

`4eefa79d76d6fd8b50000007 =             {
            "_id" =                 {
                "$id" = 4eefa79d76d6fd8b50000007;
            };
            longText = "Error Description";
            nCode = dee29fd7e15ce4ab2d3f7dfa7c5d8fc44b27501ad00908771128c920ef276154;
            nStatus = Process;
            nText = "E12345";
            nVType = Type1;
            pId =                 {
                "$id" = 4eefa79676d6fd8b50000003;
            };
            pushDate = "2011-12-20+06%3A07%3A41";
            updateFlag = 1;
        };`
Run Code Online (Sandbox Code Playgroud)

由于我将此对象传递给另一个服务以进行处理,因此不知道_id.

如何说服PHP驱动程序正确解析对象?

use*_*824 5

基本上我所做的就是这个.

return json_encode(iterator_to_array($cursor));
Run Code Online (Sandbox Code Playgroud)

但这创造了上述对象,而不是我需要的对象.

我以这种方式解决了它.

 $i=0;

   foreach($cursor as $item){
       $return[$i] = array(
           '_id'=>$item['_id'],
           'nCode'=>$item['nCode'],
           'pId'=>$item['pId'],
           'nText'=>$item['nText'],
           'longText'=>$item['longText'],
           'nStatus'=>$item['nStatus'],
           'nVType'=>$item['nVType'],
           'pushDate'=>$item['pushDate'],
           'updateFlag'=>$item['updateFlag'],
           'counter' => $i
                    );
       $i++;
   }
Run Code Online (Sandbox Code Playgroud)

return json_encode($ return);