Eftersom inget av dessa svar faktiskt talar om för dig vad som är fel här ...
$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));
Det finns ett problem med din $push uttalande, du trycker inte "done_by" med värdet "2" du skickar faktiskt "done_by" och "2" ...
Här är problemet ...
array('$push' => array("done_by","2"))
Detta bör ha en => inte en ,
array('$push' => array("done_by" => "2"))
Observera dock att varje gång du kör detta kommer det att infoga en annan "2" om du vill att MongoDB bara ska infoga "2" om den inte redan finns i "done_by" så ska du använda $addToSet ...
array('$addToSet' => array("done_by" => "2"))
Detta uttalande kommer inte att lägga till 2 varje gång, bara första gången.