Заменить все экземпляры «null» на null

#mongodb #mongodb-query #node-mongodb-native #mongodb-compass

#mongodb #mongodb-запрос #узел-mongodb-собственный #mongodb-compass

Вопрос:

После импорта данных в mongo поля, которые должны были иметь тип null, оказались строками «null», есть ли команда или запрос для замены всех экземпляров этой строки значением null?

У меня есть что-то вроде этого

 TestModel.updateMany({ test: 'null' },{ $set: { test: null } })
  

Но это выдает эту ошибку

 CastError: Cast to ObjectId failed for value "null" at path "test" for model "TestModel"
  

Я пробовал это в других полях, где все они являются строками, и это работает, но поле «test» может быть Objectid или null

Редактировать:

документ:

 const TestSchema = new Schema({
    test: { type: Schema.Types.ObjectId}
});
module.exports = db.model('TestModel', TestSchema);
  

Комментарии:

1. Пожалуйста, опубликуйте образец документа, показывающий test поле. Также укажите, откуда вы запускаете эту команду (оболочка, узел, Мангуст и т.д.).

2. @prasad_ я попытался запустить эту команду с помощью mongoose, но я ищу решение либо в mongoose, либо в оболочке

3. Эта команда может работать с использованием оболочки. Mongoose пытается преобразовать «null» в ObjectId, shell не будет. db.TestModel.updateMany({ test: 'null' },{ $set: { test: null } }, {multi: true})

4. Нужно ли явно устанавливать значение null или достаточно исключить поле из документа?

Ответ №1:

Используйте этот код:

 TestModel.updateMany({ test: 'null' }, { $set: { test: undefiend } })