Skip to content
Advertisement

Properly parse a Mongo cursor to PHP

When converting a MongoCursor to PHP I use this script. Which was presented here StackOverflowSO

using the upper method, the structure is same but _id is whereas using the lower script which yields the below included result.

Unfortunately, this results in the actual object being embedded into an array with the _id from Mongo. Like this :

`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;
        };`

Since I am passing this object to another service for processing the _id is not known.

How can I convince the PHP Driver to parse the object properly?

Advertisement

Answer

Basically what I did was this.

return json_encode(iterator_to_array($cursor));

But this created the aforementioned object which is not what I needed.

I solved it in this way.

 $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++;
   }

return json_encode($return);

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement