Подтвердить что ты не робот

Как удалить устаревшие поля в Mongo?

Я удалил некоторые поля из определения документа. Я хочу удалить это поле по всем документам коллекции. Как я могу это сделать?

4b9b3361

Ответ 1

Try:

db.collection.update(
    { '<field>': { '$exists': true } },  // Query
    { '$unset': { '<field>': true  } },  // Update
    false,                               // Upsert
    true                                 // Multi-update
)

где field - ваше устаревшее поле, а collection - это сбор, из которого он был удален.

Общая команда обновления имеет вид db.collection.update( criteria, objNew, upsert, multi ). Возвращаемые аргументы false и true отключают режим upsert и активируют множественное обновление, чтобы запрос обновлял все документы в коллекции (а не только первое совпадение).

Обновление для MongoDB 2.2 +

Теперь вы можете предоставить объект JSON вместо позиционных аргументов для upsert и multi.

db.collection.update(
    { '<field>': { '$exists': true } },  // Query
    { '$unset': { '<field>': true  } },  // Update
    { 'multi': true }                    // Options
)

Ответ 2

просто сделайте что-нибудь подобное

db.people.find().forEach(function(x) {
   delete x.badField;
   db.people.save(x);
})

oooh ответ $unset, который кто-то дал с помощью update() здесь, тоже очень классный.