Тъй като нито един от тези отговори всъщност не ви казва какво не е наред...
$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));
Има проблем с вашия $push изявление, вие не натискате "done_by" със стойност "2", вие всъщност изпращате "done_by" и "2" ...
Ето проблема...
array('$push' => array("done_by","2"))
Това трябва да има => не е ,
array('$push' => array("done_by" => "2"))
Обърнете внимание обаче, че всеки път, когато стартирате това, той ще вмъкне още едно "2", ако искате MongoDB да вмъкне само "2", ако вече не съществува в "done_by", тогава трябва да използвате $addToSet ...
array('$addToSet' => array("done_by" => "2"))
Това изявление няма да добавя 2 всеки път, а само първия път.