【问题标题】:How to change fields in object in array by id in mongoose partially?如何通过猫鼬中的id部分更改数组中对象中的字段?
【发布时间】:2021-05-27 00:58:08
【问题描述】:

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

我的奇怪尝试:

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

【问题讨论】:

  • 此处的问题和答案必须用英语书写,而不是多种语言。如果您需要俄语帮助,请使用ru.stackoverflow.com)。
  • 请将代码、错误消息、标记和其他文本信息作为文本发布,而不是作为文本的图片。为什么:meta.stackoverflow.com/q/285551/157247
  • 根据syntax过滤查询似乎是正确的

标签: javascript database mongoose


【解决方案1】:

我做到了

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
});

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 2013-10-02
    • 2017-04-18
    • 1970-01-01
    • 2014-03-10
    相关资源
    最近更新 更多