Поскольку ни один из этих ответов на самом деле не говорит вам, что здесь не так ...
$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 каждый раз, тольков первый раз.