удалить поле во вложенном документе - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь удалить поле "_types", которое является массивом во всех документах, включая другие вложенные документы в коллекции.Я исследовал и нашел несколько статей, предлагающих решения, и я попробовал их все.Все результаты совпадают, но без изменений («nMatched»: 1, nModified: 0).

пример документа:

{
  _cls: foo,
  data_servers: [
    {
      name: bar,
      _types: [baz, qux]
    }
  ]
}

Я хочу удалить массив с именем _types, я неМне все равно, что внутри, просто хочу, чтобы поле ушло.Предположим, он находится в коллекции под названием test.

Я пробовал:

* db.test.update({}, {$unset: {"_types":1}}, multi=true)
* db.test.update({}, {$unset: {"data_servers._types": ""}})
* db.test.update({}, {$unset: {"data_servers.$._types: ""}})

И все этирезультат совпадений, но без изменений:

WriteResult{{"nMatched": 1, "nUpserted": 1, "nModified": 1})

Может кто-нибудь сказать мне, что я делаю неправильно?Спасибо.

1 Ответ

0 голосов
/ 09 февраля 2019

Это должно работать

db.test.update( 
 {}, 
 {$unset:{"data_servers._types":1}}, 
 false,true 
)

Возможно, проблема с вашим кодом заключается в том, что если вы передаете опции для обновления, это должен быть объект

db.test.update(
 {},
 {$unset:{"data_servers._types":1}},
 {multi:true}
)

References [Update][1] and [$unset][2]


  [1]: https://docs.mongodb.com/manual/reference/method/db.collection.update/#db-collection-update
  [2]: https://docs.mongodb.com/manual/reference/operator/update/unset/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...