i have this document in mongo:
{
"_id": ObjectId("4d0b9c7a8b012fe287547157"),
"done_by": ["1"]
}
and i want to add another value to "done_by" field, so my expected document will be::
{
"_id": ObjectId("4d0b9c7a8b012fe287547157"),
"done_by": ["1","2","3"]
}
i try this:
$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));
but nothing happens, anyone know how to do this?
When you need to update use
$addToSet
so you avoid duplicate inserts which leads to multiple entries.$push => array('done_by' => '2')
So says the manual:
{ $push : { field : value } }
Since neither of these answers are actually telling you what's wrong here ...
There is a problem with your $push statement, you are not pushing "done_by" with a value of "2" you are actually sending "done_by" and "2" ...
Here is the issue ...
This should have a => not a ,
However, note that every time you run this it will insert another "2" if you want MongoDB to only inset "2" if it doesn't already exist in "done_by" then you should use $addToSet ...
This statement won't add 2 everytime, only the first time.
u can use as this :