sql >> Base de Datos >  >> NoSQL >> MongoDB

inserte un nuevo valor en la matriz interna de mongodb - mongodb/php

Dado que ninguna de estas respuestas realmente le dice qué es lo que está mal aquí...

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

Hay un problema con tu $push declaración, no está presionando "done_by" con un valor de "2", en realidad está enviando "done_by" y "2" ...

Aquí está el problema...

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

Esto debería tener un => no un ,

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

Sin embargo, tenga en cuenta que cada vez que ejecute esto, insertará otro "2" si desea que MongoDB solo inserte "2" si aún no existe en "done_by", entonces debe usar $addToSet ...

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

Esta declaración no agregará 2 cada vez, solo la primera vez.