Ponieważ żadna z tych odpowiedzi w rzeczywistości nie mówi, co jest tutaj nie tak...
$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));
Wystąpił problem z Twoim $push oświadczenie, nie naciskasz „done_by” z wartością „2”, w rzeczywistości wysyłasz „done_by” i "2" ...
Oto problem ...
array('$push' => array("done_by","2"))
To powinno mieć => nie ,
array('$push' => array("done_by" => "2"))
Należy jednak pamiętać, że za każdym razem, gdy to uruchomisz, wstawi kolejną „2”, jeśli chcesz, aby MongoDB wstawił tylko „2”, jeśli nie istnieje jeszcze w „done_by”, powinieneś użyć $addToSet ...
array('$addToSet' => array("done_by" => "2"))
To stwierdzenie nie doda 2 za każdym razem, tylko za pierwszym razem.