如何通过mongose中的id部分更改数组中对象的字段



如何在mongoose中通过id更改数组中对象的部分字段?我需要更改一个对象"卡片"中的问题和答案。我该怎么做?

我的奇怪尝试:

const game = await Game.findOneAndUpdate({ _id: cardId, cards._id: itemQuestionId }, { $set: { 
cards.$.question: questionEdit, 
cards.$.answer: answerEdit
}
}).lean()

文件结构-

{
"theme": "Игра престолов",
"cards": [{
"_id": {
"$oid": "60ae1e78956ee2a72057c87f"
},
"question": "Мастера монет Лорда Петра Баелиша также знали под каким именем?",
"answer": "Мизинец",
"points": 100
}, {
"_id": {
"$oid": "60ae1e78956ee2a72057c880"
},
"question": "Что изображено на гербе Ланнистеров?",
"answer": "Лев",
"points": 200
}, {
"_id": {
"$oid": "60ae1e78956ee2a72057c881"
},
"question": "Как зовут Лютоволка Джона Сноу?",
"answer": "Призрак",
"points": 300
}, {
"_id": {
"$oid": "60ae1e78956ee2a72057c882"
},
"question": "Кто был ответственным за создание Ночного Короля?",
"answer": "дети леса",
"points": 400
}, {
"_id": {
"$oid": "60ae1e78956ee2a72057c883"
},
"question": "Чёрно-белый дом служит ещё и храмом. А кому там поклоняются?",
"answer": "Многоликому",
"points": 500
}],
"__v": 0
}

在互联网上,我找到了只适用于MongoDB的解决方案,我需要Mongoose

我做了

app.patch("/api/v1/games/", async (req, res, next) => {
const {questionEdit, answerEdit, itemQuestionId, cardId} = req.body;
const game = await Game.findOneAndUpdate(
{_id: cardId},
{$set: {"cards.$[el].question": questionEdit } },
{ 
arrayFilters: [{ "el._id":  itemQuestionId}],
new: true
}
)
.........................rest code
});

最新更新