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);