У меня есть такой документ:
{
"_id" : ObjectId("591ed2f0470e6ccc143c986e"),
"name" : "Planets",
"prototype_id" : null,
"parameters" : [
"591eefe3470e6cd70c3c9872",
"591eefc3470e6c500f3c9872",
"591eedbe470e6cd70c3c9871"],
"available" : "1"}
Я пытался установить []
для поля parameters
если значение 591eefe3470e6cd70c3c9872
существует в этом массиве.
Я старался:
$new = array('$set' => array("parameters" => []));
$this->collection->update(array("parameters" => "591eedbe470e6cd70c3c9871"), $new);
Это не работает…
Методы MongoDB update () и save () используются для обновления документа в коллекцию. Метод update () обновляет значения в существующем документе, в то время как метод save () заменяет существующий документ документом, переданным в методе save ().
MongoDB Update () Метод
Метод update () обновляет значения в существующем документе.
Синтаксис
Основной синтаксис метода update () следующий:
db.COLLECTION_NAME.update (SELECTION_CRITERIA, UPDATED_DATA)
Считайте, что коллекция mycol имеет следующие данные
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"My Overview"}
В следующем примере будет установлено новое название «Новое руководство по MongoDB» для документов, название которых «Обзор MongoDB».
db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}})
db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"My Overview"}
По умолчанию MongoDB обновит только один документ. Чтобы обновить несколько документов, необходимо установить для параметра «multi» значение true.
db.mycol.update({'title':'MongoDB Overview'},
{$set:{'title':'New MongoDB Tutorial'}},{multi:true})
Других решений пока нет …