#javascript #node.js #mongodb #mongoose
Вопрос:
Я пытаюсь обновить вложенный объект с помощью мангуста. Я пытаюсь обновить только «Дату напоминания» и сохранить «время». Я могу обновить «дату напоминания», однако это удаляет мое свойство «Время напоминания».
Я попробовал следующее, и ни один из них не работает
Model.updateMany(req.query, { remindTime: { date: "2021-09-28" } })
Model.updateMany(req.query, { remindTime: $set:{ { date: "2021-09-28" } } } )
Данные базы данных, которые я обновляю
{
"_id": {
"$oid": "614d3cedfb2600340fdb28f9"
},
"date": "2021-09-23",
"title": "First test",
"description": "not working yet",
"remindTime": {
"date": "2021-09-28",
"time": "01:20 am"
},
"isComplete": false,
}
Ответ №1:
Пожалуйста, попробуйте это:
Model.updateMany(req.query, { "remindTime.date": "2021-09-28"})
Ответ №2:
Вы можете использовать точечную нотацию:
Согласно документам:
MongoDB использует точечную нотацию для доступа к элементам массива и для доступа к полям встроенного документа.
Чтобы указать или получить доступ к полю встроенного документа с точечной нотацией, объедините имя встроенного документа с точкой (.) и именем поля и заключите в кавычки:
"<embedded document>.<field>"
Итак, запрос:
Model.updateMany(req.query,
{
"$set": {
"remindTime.date": "new date"
}
})
Пример здесь