MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

enviar novo valor para a matriz interna do mongodb - mongodb/php


Como nenhuma dessas respostas está realmente dizendo o que está errado aqui ...
$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));

Há um problema com seu $push declaração, você não está enviando "done_by" com um valor de "2" na verdade você está enviando "done_by" e "2"...

Aqui está a questão...
array('$push' => array("done_by","2"))

Isso deve ter um => não um ,
array('$push' => array("done_by" => "2"))

No entanto, observe que toda vez que você executar isso, ele inserirá outro "2" se você quiser que o MongoDB insira apenas "2" se ainda não existir em "done_by", então você deve usar $addToSet ...
array('$addToSet' => array("done_by" => "2"))

Esta declaração não adicionará 2 sempre, apenas na primeira vez.