2012-04-13 3 views
33

Мне нужно удалить определенный ключ и значение из каждой записи в определенной коллекции. Я просмотрел удаление, и это похоже на целые записи. Глядя на обновление, я не верю, что обновление определенного ключа с нулевой или пустой строкой приведет к тому, что я пытаюсь сделать. Я очень начинаю с монгодбом, поэтому, пожалуйста, извините мое невежество.Удаление ключа/значения из существующей записи MongoDB

Короче говоря, как я могу превратить

{ 
    "_id" : 1234, 
    "name" : "Chris", 
    "description" : "Awesome" 
} 

в

{ 
    "_id" : 1234, 
    "name" : "Chris" 
} 

без удаления записи и создания нового, или с помощью каких-либо команд, не MongoDB? Благодаря!

+0

Возможный дубликат [Как удалить поле полностью из Монго?] (Http://stackoverflow.com/questions/6851933/how-do-i-remove-a-field-full-from-mongo) –

ответ

68

Попробуйте $unset по вызову update().

Другими словами,

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} });

должен работать. Link.

+1

Спасибо! Это сработало отлично. – Chris

+15

Чтобы обновить все документы в коллекции, вы можете использовать: 'db.collection_name.update ({}, {$ unset: {description: 1}}, false, true);' Последнее верно для обновления нескольких документов –

+2

Новые версии поддерживаем более читаемый формат: 'db.example.update ({}, {$ unset: {words: 1}}, {multi: true})' – phocks

-5

Также подумайте о upsert(), который вставляет вашу строку в новый документ, если _id не существует или обновляет существующий документ, если таковой имеется.

2

Для ссылки на пакет и удалить различные «ключи», попробуйте этот

db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" })] 
Смежные вопросы