Мне нужно увеличить значение многоуровневого вложенного поля, если оно существует, или создать полное вложенное поле. Структура объекта.
Структура моего документа
Doc1 {
_id:ObjectId(),
myField: {
nested:{
x: 5,
y: 10,
z: 20
}
}
}
Объяснение цели : мне нужен способ написать один запрос:
- Если myField существует : Увеличить значение моего вложенного поля myField.nested.x на 10.
- Если myField не существует : Создайте поле ниже с начальными значениями, такими как указано в Doc1 .
Попытка и объяснение :
db.collection('collectionName').findOneAndUpdate(
{_id:"userId","myField" : { $exists : true }},
{$inc:{'myField.nested.x':10}
})
Таким образом, я могу увеличить вложенное поле, если оно существует, но в случае отсутствия я не могу установить myField так же, какdoc1.
Хотя я могу использовать другой запрос после ответа в моем обратном вызове NodeJ для достижения требуемого поведения. Но мне нужно элегантное решение в одном запросе.
Я использую MongoDB версии 4.0.4, спасибо заранее.