Я хочу обновить один объект массива subdo c с помощью findByIdAndUpdate по родительскому идентификатору и subdo c идентификатору объекта. При выполнении этого кода я получил эту ошибку:
The positional operator did not find the match needed from the query.
Когда я использую updateOne с параметром фильтра, он работает. Но я хотел бы, чтобы обновленный документ возвращался как json для остальных API.
Есть ли способ получить обновленный документ?
Мой код:
Subject.findByIdAndUpdate(
{ _id: req.params.subjectId, "bookmarks._id": req.params.bookmarkId },
{
$set: {
"bookmarks.$.uri": req.body.uri
}
},
{ new: true }
)
Схема:
{
"_id": "5e7fbfc05ff6be1446b51af7",
"user_id": "5e7e68c3fd5e9404ce6a14a3",
"title": "Hello World",
"date": "2020-03-28T21:21:04.434Z",
"bookmarks": [
{
"date": "2020-03-28T21:21:20.806Z",
"_id": "5e7fbfd05ff6be1446b51afa",
"uri": "lorem ipsum"
},
{
"date": "2020-03-28T21:21:21.433Z",
"_id": "5e7fbfd15ff6be1446b51afb",
"uri": "lorem ipsum"
}
]
}