sql >> Databasteknik >  >> NoSQL >> MongoDB

push nytt värde till mongodb inre array - mongodb/php

Eftersom inget av dessa svar faktiskt talar om för dig vad som är fel här ...

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

Det finns ett problem med din $push uttalande, du trycker inte "done_by" med värdet "2" du skickar faktiskt "done_by" och "2" ...

Här är problemet ...

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

Detta bör ha en => inte en ,

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

Observera dock att varje gång du kör detta kommer det att infoga en annan "2" om du vill att MongoDB bara ska infoga "2" om den inte redan finns i "done_by" så ska du använda $addToSet ...

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

Detta uttalande kommer inte att lägga till 2 varje gång, bara första gången.



  1. TTL för en uppsättningsmedlem

  2. Sessionstillstånd med Azure Redis Cache fungerar inte på flera instanser

  3. Mongoose find(), hur får man tillgång till resultatdokumenten?

  4. Hur konverterar jag en egenskap i MongoDB från text till datumtyp?