MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Schieben Sie den neuen Wert in das innere Array von mongodb - mongodb/php

Da Ihnen keine dieser Antworten wirklich sagt, was hier falsch ist ...

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

Es gibt ein Problem mit Ihrem $push Anweisung pushen Sie "done_by" nicht mit einem Wert von "2", Sie senden tatsächlich "done_by" and "2" ...

Hier ist das Problem ...

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

Dies sollte ein => haben kein ,

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

Beachten Sie jedoch, dass jedes Mal, wenn Sie dies ausführen, eine weitere "2" eingefügt wird, wenn Sie möchten, dass MongoDB nur "2" einfügt, wenn sie nicht bereits in "done_by" vorhanden ist, dann sollten Sie $addToSet verwenden ...

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

Diese Anweisung addiert nicht jedes Mal 2, nur beim ersten Mal.