Я использую ETL для извлечения данных из sybase в среду MongoDB.Первоначально мой ETL-дизайн для значения выглядел так:
hireDate: data.hire_date ? data.hire_date : null
Но, хотя это работает, он также заполняет ноль в базе данных, когда значение не существует в исходном документе.
Будет работать условное выражение длинной формы, например:
if (data.hire_date) staffProfile.hireDate = data.hire_date;
Но я бы хотел сделать это как можно более кратким и использовать троичное выражение для обработки этого в одной и той же строке кода.где я присваиваю значение.
Теперь, так как я не хочу заполнять базу данных нулями, я пытаюсь использовать троичные выражения таким образом, чтобы просто пропустить поле doc, еслиэто undefined
, как то, что происходит в условном выражении «если», приведенном выше.Однако то, что я попробовал, не работает.Мои ошибки ETL, когда документ содержит значение undefined
.Вот соответствующий раздел кода, который я пробовал:
Staff.findOneAndUpdate(
{
legacyId: data.id_number
},
{
$set: {
staffProfile: {
hireDate: data.hire_date ? (hireDate = data.hire_date) : null,
vtrNum: data.vtr_num ? (vtrNum = data.vtr_num) : null
}
}
},
{
returnNewDocument: true
}
);
Что мне здесь не хватает?Есть ли способ выполнить эту оценку и задание в одной строке, как я пытаюсь сделать здесь?