push new value to mongodb inner array - mongodb/php

后端 未结 5 1575
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-25 13:33

i have this document in mongo:

{
   \"_id\": ObjectId(\"4d0b9c7a8b012fe287547157\"),
   \"done_by\": [\"1\"]
}

and i want to add another va

5条回答
  •  春和景丽
    2020-12-25 14:21

    Since neither of these answers are actually telling you what's wrong here ...

    $conn = new Mongo();
    $q = $conn->server->gameQueue;
    $id = new MongoId("4d0b9c7a8b012fe287547157");
    $q->update(array("_id"=>$id),array('$push' => array("done_by","2")));
    

    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 ...

    array('$push' => array("done_by","2"))
    

    This should have a => not a ,

    array('$push' => array("done_by" => "2"))
    

    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 ...

    array('$addToSet' => array("done_by" => "2"))
    

    This statement won't add 2 everytime, only the first time.

提交回复
热议问题