Как обновить поле в БД Монго?

У меня есть такой документ:

{
"_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);

Это не работает…

0

Решение

Методы 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})
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]