Da ingen af disse svar faktisk fortæller dig, hvad der er galt her ...
$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));
Der er et problem med din $push sætning, du trykker ikke "done_by" med en værdi på "2", du sender faktisk "done_by" og "2" ...
Her er problemet ...
array('$push' => array("done_by","2"))
Dette skal have en => ikke en ,
array('$push' => array("done_by" => "2"))
Bemærk dog, at hver gang du kører dette, vil det indsætte en anden "2", hvis du ønsker, at MongoDB kun skal indsætte "2", hvis den ikke allerede findes i "done_by", så skal du bruge $addToSet ...
array('$addToSet' => array("done_by" => "2"))
Denne erklæring tilføjer ikke 2 hver gang, kun første gang.