#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 } })