MongoDB: updateOne если в документе нет нужного поля
Предположим, есть объект какого-то продукта:
const prod = {
_id: 123123123,
name: "car",
description: "BMW X6"
}
Нужно найти в Mongo документ с таким же _id и посмотреть на поле description. Если там null (или любое falsy значение), то проапдейтить его, взяв description из объекта prod. А если description уже есть, то не апдейтить ничего.
Можно ли как-то это осуществить? Использую Mongoose и метод Model.updateOne
Ответы (1 шт):
Автор решения: Maxim Sharai
→ Ссылка
Если я все правильно понял, то:
Model.updateOne({_id: prod._id, description: null}, {description: prod.description})
Сравнение description с null должно работать в случае null или отсутствия проперти вообще. Если нужны другие значение, можно попробовать их объединить при помощи $in:
Model.updateOne({_id: prod._id, description: {$in: [null, false, 0, '']}}, {description: prod.description})