Vì cả hai câu trả lời này đều không thực sự cho bạn biết điều gì sai ở đây ...
$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));
Đã xảy ra sự cố với $ push của bạn tuyên bố, bạn không đẩy "done_by" với giá trị là "2" mà bạn thực sự đang gửi "done_by" và "2" ...
Đây là vấn đề ...
array('$push' => array("done_by","2"))
Điều này phải có một => không phải là ,
array('$push' => array("done_by" => "2"))
Tuy nhiên, lưu ý rằng mỗi khi bạn chạy điều này, nó sẽ chèn một "2" khác nếu bạn muốn MongoDB chỉ chèn "2" nếu nó chưa tồn tại trong "done_by" thì bạn nên sử dụng $ addToSet ...
array('$addToSet' => array("done_by" => "2"))
Câu lệnh này sẽ không thêm 2 lần mọi lúc, chỉ lần đầu tiên.