2014-06-05 6 views
2

Обычно для удаления поля из коллекции обычно используется следующее. Однако приведенный ниже код не работает для пустых ("") полей. Как вы могли бы удалить пустое поле в MongoDB?Удаление пустых полей из MongoDB

db.collection.update({}, {$unset: {"": ""}}, {multi:true}) 

Я получаю следующее сообщение об ошибке при попытке это:

WriteResult({ 
    "nMatched" : 0, 
    "nUpserted" : 0, 
    "nModified" : 0, 
    "writeError" : { 
     "code" : 56, 
     "errmsg" : "An empty update path is not valid." 
    } 
}) 
+0

Как вы определяете «пустое поле» в своем вопросе? Можете ли вы изменить свой вопрос, чтобы привести пример? – JohnnyHK

+0

Ключ буквально "" – Jonathan

+0

Интересно ... Я даже не знал, что это возможно. – JohnnyHK

ответ

1

Похоже, пустые ключи строки должны быть частично поддерживается только MongoDB.

Это не так эффективно, как мульти-обновления, но он работает, чтобы удалить эти поля в оболочке:

db.collection.find().forEach(function(doc) { 
    delete doc['']; 
    db.collection.save(doc); 
}); 
1

Чтобы сделать это с помощью обновления или updateMany метод, вам должен указать параметр, который вы хотите обновить, например name:

db.collection.updateMany({name: ""}, { $unset : { name : 1 }}) 
Смежные вопросы