Как полностью удалить поле из документа MongoDB?
{
name: 'book',
tags: {
words: ['abc','123'],
lat: 33,
long: 22
}
}
предположим, что это документ. Как мне удалить "words полностью из всех документов в этой коллекции? Я хочу, чтобы все документы были без "words":
{
name: 'book',
tags: {
lat: 33,
long: 22
}
}
8 ответов:
попробуйте это: если ваша коллекция была "пример"
db.example.update({}, {$unset: {words:1}}, false, true);передать этот:
http://www.mongodb.org/display/DOCS/Updating#Updating-%24unset
обновление:
приведенная выше ссылка больше не охватывает '$unset'ING. Комментарий ник Котрелла ниже-это путь, который нужно сделать сейчас. Будьте уверены, чтобы добавить
{multi: true}Если вы хотите удалить это поле из всех документов в коллекции; в противном случае оно будет удалено только из первого документ он находит, что соответствует. Смотрите эту обновленную документацию:https://docs.mongodb.com/manual/reference/operator/update/unset/
пример:
db.example.update({}, {$unset: {words:1}} , {multi: true});
в начале я не понял, почему у вопроса есть щедрость (я думал, что у вопроса есть хороший ответ и нечего добавить), но потом я заметил, что ответ, который был принят и поддержан 15 раз, был на самом деле неправильным!
Да, вы должны использовать
$unsetоператор, но это unset собирается удалить слова ключ, который не существует для документа для коллекции. Так что в принципе он ничего не будет делать.Так что вам нужно сказать Монго посмотрите в тегах документа, а затем в словах с помощью точку. Так что правильный запрос.
db.example.update( {}, { $unset: {'tags.words':1}}, false, true )просто ради завершения, я буду ссылаться на другой способ сделать это, что намного хуже, но таким образом вы можете изменить поле с любым пользовательским кодом (даже на основе другого поля из этого документа).
удалить или удалить поле в MongoDB
для одной записи
db.getCollection('userData').update({}, {$unset: {pi: 1}})Для Multi Запись
db.getCollection('userData').update({}, {$unset: {pi: 1}}, {multi: true})
db.example.updateMany({},{"$unset":{"tags.words":1}})мы также можем использовать это, чтобы обновить несколько документов.
по умолчанию, метод update() обновляет один документ. Установите параметр Multi, чтобы обновить все документы, соответствующие критериям запроса.
изменено в версии 3.6. Синтаксис:
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document>, collation: <document>, arrayFilters: [ <filterdocument1>, ... ] } )пример :
db.getCollection('products').update({},{$unset: {translate:1, qordoba_translation_version:1}}, {multi: true})в вашем примере :
db.getCollection('products').update({},{$unset: {'tags.words' :1}}, {multi: true})
проверка, если "слова" существует, а затем удалить из документа
db.users.update({"tags.words" :{$exists: true}}, {$unset:{"tags.words":1}},false,true);true указывает на обновление нескольких документов, если они совпадают.
для ссылки на пакет и удаления различных " ключей", попробуйте это
db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } )]
Comments