[英]How to change fields in object in array by id in mongoose partially?
如何通过 mongoose 中的 id 更改数组中 object 中的部分字段? 我需要在一张 object '卡片'中更改问题和答案。 我怎样才能做到这一点?
我奇怪的尝试:
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 的解决方案,我需要 ZCCADCDEDB567ABAE643E15DCF0974E503Z
我做的
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
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.